CSS Dixieland
Probing the depths of knowledge
These essays by P. A. Stonemann, CSS Dixieland, cover a wide range of
historical, philosophical, scientifical and technical subjects. Each page
deals with a particular topic, divided into sections and explained by itself.
Every page shows at its top hyper links to every other page. The Start page
also has short descriptions of the other pages. CSS Dixieland expresses
gratitude to the readers that make this work meaningful.
This Web document has been tested with KDE Konqueror, graphic HTML interpreter
for Linux. It may not be rendered correctly by other graphic HTML interpreters.
It will probably be correct when rendered by text-only HTML interpreters (visual,
aural, or Braille tactile interpreters), but if feasible, please use KDE Konqueror.
Uniform Resource Locator:
https://konqueror.org/
Free-DOS Operating System page
The system for the Computing enthusiast who really knows
The awesome power of the command line, in expert fingers
Walkyrie who takes our dead heroes to Walhalla in Asgard.
Wagner Frost Illustration
Sections in this page
Introduction to Free-DOS
Technical characteristics
Free-COM command interpreter
Technical note: In languages other than English or Latin, but which use mainly
Latin characters, some characters are taken from other alphabets, or some Latin
characters are modified with diacritic marks for representing different phonemic
sounds or other orthographic conventions of those languages. Those characters,
when used in this document, have been encoded as entities of Hyper Text Mark-up
Language or sometimes in Unicode UTF-8. Therefore computers using other character
encodings may render some characters inaccurately, but hopefully, it will still
be possible to read non-English words without too much difficulty.
Introduction to Free-DOS
Free-DOS is an operating system of 16 bits focused on operation by command
line. In this regard the concept is similar to other systems also based on
textual commands entered at a command prompt, such as other DOS systems
(PC-DOS, MS-DOS, DR-DOS, PTS-DOS, ROM-DOS, Amiga-DOS...), AROS, CP/M, Haiku,
Inferno, Plan 9, React OS, Symbian, most systems of the Unics genealogy
(Minix, Linux, BSD, Macintosh Darwin OS X, GNU Hurd, Open Solaris...), or
systems of another family, when used without X-11 Window or any other graphic
interface. Free-DOS can be made to work with GEM or with some other graphic
interfaces, as it is the case with most variants of Unics and with several
other operating systems, which often can be used by command line or by
graphic interface. Some systems can be used only either way, but not both.
CP/M is an example of only command line, while Syllable is an example of only
graphic interface. In general, although most systems can be used in both ways,
either the command line or the graphic interface tends to be predominant in a
particular system. In Free-DOS it is the command line, which gives greater
flexibility, but which also requires a learning effort.
In many respects, Free-DOS is the most advanced DOS system that exists or has
existed, since the invention of QDOS and 86-DOS in 1980-1981 (which were based
on CP/M). Any serious work with a computer can be done using Free-DOS, inside
certain limitations that are explained in its documentation. For instance, DOS
systems in general do not allow task swapping, except background execution of
the print spooler (although there are a few programmes that allow a limited
switching of tasks), and they do not use virtual memory, but they can be made
to use a RAM volume if having enough Random Access Memory in the computer. DOS
is intended for the relatively knowledgeable user. Not so knowledgeable as for
using Unics, but certainly more than for the ubiquitous Microsoft Windows.
Persons without any experience in DOS or in other systems operated by command
line, are strongly advised to read first some tutorial appropriate to their
current knowledge. Different levels of tutorials can be easily found in the
Internet. It may be possible for an intelligent reader to dive directly into
the pages of the Free-DOS documentation and to understand their meaning with
more or less difficulty, but the documentation is not a tutorial, and it does
not make any attempt at smoothing the learning path of a beginner.
Synopsis
Operating System Family: DOS 16 bits
Operating System Categories: embedded operating systems, operating systems
based on floppy, free software operating systems, DOS in IBM Personal
Computer or compatibles
Producer: James Hall and The Free-DOS Team
Initial Release: version Alpha of 28 June 1994
Latest Stable: version 1.0 of 2006 and version 1.1 of 2012
Working State: current in 2016
Source Model: free open source, some closed source utilities
Licence: GNU GPL. Some public domain, freeware or shareware utilities
Kernel Type: monolithic, intended for unal core processors
Supported Platforms: Intel x86 processor or compatible in IBM Personal
Computer or compatible
Default Interface: DOS command line, optional graphic interface
Available Languages: English, German
Presentation
Free-DOS (known in 1994 as PD-DOS, shortly later as Free-DOS, and currently
known as FreeDOS, without the hyphen) is an operating system for IBM Personal
Computer or compatible, using Intel x86 processor or compatible. Free-DOS
supports vintage hardware IBM Personal Computer or compatible made since 1981
to the present, in addition to embedded computers. As a member of the DOS
family, Free-DOS provides access to storage volume mainly through its kernel,
and partial memory management, but without default graphic interface, although
Open-GEM (derived from the Graphic Environment Manager of DR-DOS) is included
in the official Free-DOS distribution. Some other graphic interfaces for DOS
systems could also be used, though they are not included in the distribution.
Free-DOS is made of different, separate programmes, that act as packages to
the overall Free-DOS Project. Free-DOS itself, as well as most of the included
programmes, are licenced under the terms of the GNU General Public Licence of
the Free Software Foundation, but some programmes are public domain, freeware,
or shareware. Most of that non-GPL software is located in the directory of
utilities, some programmes are each in its own directory. An example of free
use but closed source is the 4DOS command interpreter, which can be used as
primary or as secondary interpreter in place of Free-Com, the free and open
source default command interpreter of Free-DOS. Many programmes included in
the distribution are open source and have their sources available (unlike for
example MS-DOS or PC-DOS, which are closed source). Free-DOS does not require
any licence fees or royalties. Creation of custom distributions is permitted
and encouraged. Any use is allowed, even inside commercial products, keeping
the system free and in compliance with the terms and conditions for using it.
As of 2016, Free-DOS current versions are 1.0, released on 3 September 2006,
and 1.1, released in 2012. The two versions can be obtained by Internet as an
image for burning a compact disk. Version 1.0 gives a 'live' compact disk
that can be boot-strapped directly, giving a command line with full Free-DOS
functionality. Version 1.1 offers some more resources, such as USB support,
but it cannot be boot-strapped from the compact disk, it is intended for
installation into a hard disk or another boot-strappable storage volume.
Persons wishing to know more about Free-DOS, beyond what is explained in the
documentation, can subscribe to a list regularly sent via electronic post, or
can write to the appropriate electronic addresses of Free-DOS. There are also
at least two Web fora focused on DOS systems, and some Usenet groups. It is
also possible to have communication in real time by Internet Relay Chat with
persons who are experienced in Free-DOS, thus asking questions or requesting
advice. For that purpose Free-DOS has a sparsely-populated IRC channel:
#freedos irc.i7c.org
Computers using other than the Intel x86 family of processors or compatibles,
or using architectures other than IBM Personal Computer or its clones, cannot
execute Free-DOS. An option for them might be one of the systems of the Unics
genealogy, such as Minix or BSD, which are portable to many different kinds
of computers. Technically speaking BSD is part of the Unics genealogy, but in
legal terms, UNIX (in capital letters) was a trade mark of AT & T, later of
Novell, and as of 2016 of The Open Group, not including BSD. That is why the
earlier name of 'Unics' is used in this document in reference to systems of
that genealogy, but which are not owned or marketed by The Open Group. The
CSS Dixieland page on Unics operating systems has information on them. The
page can be visited by activating the following internal link:
cssdixieland_unics.html
History of Free-DOS
In April 1994 Microsoft Corporation released MS-DOS version 6.22
It was the last stand-alone version of a very successful series of operating
systems of 16 bits started in 1980 by Mister Tim Patterson (Seattle Computer)
with the original name of QDOS, shortly later renamed as 86-DOS and sold to
Mister Paul Allen and Mister William Bill Gates (Microsoft Corporation).
As PC-DOS, it became incorporated into the IBM Personal Computer marketed in
1981, and further developed by IBM and by many other companies. As MS-DOS, it
was released separately by Microsoft. DOS systems were strongly based on the
CP/M operating system of 8 bits for Intel 8080, created some years earlier by
Mister Gary Kildall (Intergalactic Digital Research). A version of 16 bits
for Intel 8086, known as CP/M 86, was offered by IBM as an alternative system
for the Personal Computer. Digital Research also developed from CP/M 86 its
own DR-DOS system, years later also known as Novell DOS and Caldera Open DOS.
MS-DOS, PC-DOS, DR-DOS, PTS-DOS, ROM-DOS, Amiga-DOS, and several other DOS
systems, were predominant in most microcomputers of the 1980's and early
1990's, especially in those of the 'Personal Computer' series of IBM or
compatible with them, but also in Commodore Amiga computers and many others.
Other systems existed, such as Unics, but they often required more hardware
than most microcomputers could offer at the time. Only the best microcomputers
of those years could execute Unics, computers known as 'Unics Work Stations'.
Older systems, or computers that were not fully compatible with IBM Personal
Computer, were driven out of the market or became restricted to a minority of
enthusiasts, such as the P-System or the CP/M operating systems, or as the
Apple Macintosh, Commodore Amiga, Atari ST, and other computers. For many
years DOS and IBM PC were the kings of microcomputers, although not without
pretenders to the throne, some of whom have managed to continue until today.
On 29 June 1994 (only two months after the release of MS-DOS 6.22), Microsoft
announced its decision that it would no longer sell or support MS-DOS. The
company chose to concentrate efforts on Windows systems (graphic interface
operating systems of 16 bits started in 1985, today of 32 or of 64 bits).
Immediately after the announcement made by Microsoft, Mister James Hall, a
programmer and long time enthusiast of MS-DOS, posted a public manifiesto
proposing the development of an open-source replacement for MS-DOS.
Within a few weeks other programmers joined the project, such as Mister
Pasquale Pat Villani and Mister Tim Norman. Mister Villani undertook the
creation of the kernel, and Mister Norman the creation of the Free-COM
command line interpreter, composed of two independent executables:
COMM8086.COM for Intel 8086 processor or compatible, and COMMAND.COM for
later Intel x86 processors or compatible.
Thus the kernel, the command interpreters and several core utilities were
created by putting together code that the members of the Free-DOS project
had written themselves, or that they had found available.
The Free-DOS Kernel (printed book), by Pasquale Pat Villani
Miller Freeman, Emeryville, California, USA, 1996
ISBN 0-87930-436-7
That is how the PD-DOS project began, shortly later renamed as Free-DOS, and
after that gradually better known as FreeDOS, without the hyphen between the
words 'Free' and 'DOS'. Free-DOS grew to become the most mature DOS system.
Announcement of the PD-DOS Project, made by Mister James Hall in late June
1994, in Usenet Newsgroups:
comp.os.msdos.apps
Versions of Free-DOS
It will be observed in the list below that between the start of the project
in late June 1994 and the first public release in January 1998, three and a
half years had passed. The creation of a brand new and efficiently working
operating system is not an easy quest, even for expert programmers of the
quality of those who form The Free-DOS Development Team.
For twelve years there were several official distributions of Free-DOS known
as 0.x Alpha or Beta versions, before the release of Free-DOS version 1.0 in
September 2006. A distribution of Free-DOS called GNU/DOS was discontinued
after the release of Free-DOS version 1.0
Given below is the version number beginning with 0 or with 1, the status of
development (ALPHA, BETA or FINAL), the code name by which it was known
(none, for several versions), very short notes in the case of versions 1.0
or 1.1, and the date of public release.
0.05 ALPHA, no code name, 12 January 1998
0.1 BETA, code name Orlando, 25 March 1998
0.2 BETA, code name Marvin, 28 October 1998
0.3 BETA, code name Ventura, 21 April 1999
0.4 BETA, code name Lemur, 9 April 2000
0.5 BETA, code name Lara, 10 August 2000
0.6 BETA, code name Midnite, 18 March 2001
0.7 BETA, code name Spears, 7 September 2001
0.8 BETA, code name Nikita, 7 April 2002
0.9rc1 BETA, code name Methusalem, July 2003
0.9rc2 BETA, no code name, 23 August 2003
0.9rc3 BETA, no code name, 27 September 2003
0.9rc4 BETA, no code name, 5 February 2004
0.9rc5 BETA, no code name, 20 March 2004
0.9 BETA, no code name, 28 September 2004
0.9sr1 BETA, no code name, 30 November 2004
0.9sr2 BETA, no code name, 30 November 2005
1.0 FINAL (live disk, without USB support), no code name, 3 September 2006
1.1 (like 1.0 without live disk, but with USB support), no code name, 2012
1.2 (expected to be released at the end of 2016)
By declaration of the Free-DOS Team Leader, Mister James Hall, Free-DOS
version 1.1 is not radically different from version 1.0, it is just an
enhancement of it. Version 1.0 can be boot-strapped from its compact disk
(a feature known as 'live disk'), but in version 1.1 it is necessary to
install into a hard disk or another boot-strappable storage volume. This
limitation prompted many Free-DOS enthusiasts to continue using version 1.0
rather than 'updating' to version 1.1, to the point that the free download
of 1.0 (which had been temporarily unavailable after the release of 1.1),
returned to the Free-DOS Web document. The two versions are now available.
Version 1.2 is expected to be released at the end of 2016, though since mid
2016 there are two unstable pre-releases available for testing purposes.
Mister Mateusz Viste, of Free-DOS, reports that there has never been a DOS
system of 32 bits in existence. They are all of 16 bits. He warns that the
number of bits must not be confused with the support for File Allocation
Table. All DOS systems support FAT 12 (for floppy disk) and FAT 16 (for hard
disk or other storage volumes, since MS-DOS 3.31 often found as FAT 16 B).
Five DOS systems are known to support FAT 32:
-MS-DOS versions 7.0, 7.1, 8.0, which are versions of MS-DOS not intended as
stand-alone DOS, but as part of Windows 95 (MS-DOS 7.0), Windows 95 B, 98, 98
Second Edition, Millennium Edition (MS-DOS 7.1), or versions of Windows based
on NT (MS-DOS 8.0). Most versions of Windows based on DOS (except Millenium
Edition) can boot-strap a real DOS (MS-DOS 7.x), without starting Windows.
The other versions of Windows (those based on NT) can only show a dialogue
box as 'command prompt', using the CMD.EXE executable (MS-DOS 8.x).
-PC-DOS since version 7.1 supports FAT 32
-DR-DOS since version 7.04 also supports FAT 32
-PTS-DOS 32, a stand-alone DOS made in Russia, likewise supports FAT 32
-The newest kernels (FAT 32) of any Free-DOS version (1.0, 1.1, 1.2) give
full support to FAT 32, and are the most actively maintained as of 2016
A specific driver (for instance DOSLFN or LFNDOS) must be installed in any of
the above versions of DOS for working with long data set names (VFAT system).
The main advantage of FAT 32 is the use of big storage volumes, because FAT 16
is limited to 2 Gigabytes. Although FDISK.EXE of Free-DOS can make partitions
of up to 4 Gigabytes as FAT 16, most DOS executables will not be able to work
with those partitions, including FORMAT.EXE or SYS.COM, thus being difficult
even to install a DOS system in a FAT 16 partition sized over 2 Gigabytes.
The main disadvantage of FAT 32 is that some executables work only with FAT 12
or FAT 16, but not with FAT 32. Some work-round is often possible, such as the
creation of a RAM volume (as FAT 16) for temporary operations, copying needed
data sets to the RAM volume, processing them, then copying back to hard disk.
There is also a wishful project of Free-DOS 32 (of 32 bits) that has been in
a sleeping condition for many years, without any visible activity. It has a
small download available, but stupidly enough, the executable is made only
for Microsoft Windows operating system and not for DOS. Ridiculous, to offer
a supposedly DOS system whose first step requires a totally different system.
Besides, what is available is not an operating system at all, it is only a
data set system called 'LEAN' (by opposition to 'FAT'), invented by the team
that is supposedly working on the Free-DOS 32 project. It looks like one more
project whose users are only its inventors, if at all. In discussions amongst
DOS enthusiasts there are those who believe that rather than making an effort
for a DOS of 32 bits, it would be better to focus on DOS support to data set
systems such as HPFS (IBM OS/2), FS (Minix), FFS (BSD), EXT2FS (Linux), NTFS
(NT-Based Microsoft Windows), or other data set systems. Different people
have different ideas on what constitutes a priority deserving more attention.
Considering that bad start, it is highly probable that such a project of a
Free-DOS of 32 bits shall never become a reality. No need of it, because the
traditional Free-DOS of 16 bits can be used for many purposes, including long
names (VFAT emulation) when using appropriate software, such as the DOSLFN.COM
of Herr Henrik Haftmann, which is included in the Free-DOS distribution. Of
the command interpreters included in Free-DOS, the newest versions of Free-COM
show long names by the /LFN switch, but 4DOS.COM needs a real VFAT data set
system, it does not normally work with just a long name driver in FAT 12, FAT
16 or FAT 32. A Free-DOS of 32 bits would require a complete re-writing of the
kernel, and many current executables would not work with a kernel of 32 bits,
probably even using DOS extenders. Some important DOS executables, such as
DEFRAG.EXE, do not even work with FAT 32 in the current Free-DOS of 16 bits.
Distributions
Free-DOS version 1.0 is available for download in at least four known
distributions of software.
From the official Free-DOS HTML document in the World Wide Web there are two
distributions of software, listed immediately below.
Blair Campbell distribution, CD-ROM image 'Base Disk':
A boot-strappable 'live' compact disk, image in ISO 9660 format, with the
current kernel and a number of programmes considered 'basic' for working with
Free-DOS.
Blair Campbell distribution, CD-ROM image 'Full Disk':
A boot-strappable 'live' compact disk, image in ISO 9660 format, with five
kernels and many more programmes, such as games, network software, programming
software, or third party programmes with permission for inclusion in Free-DOS.
Versions with source code of the distributions contained in those two compact
disks are also available. They may be downloaded via BitTorrent, FTP or HTTP
from hyper links provided in this page of CSS Dixieland.
From private HTML documents in the World Wide Web there are at least other
two distributions of Free-DOS or of software for it.
Odin distribution:
A boot-strappable floppy disk, which contains the current kernel and a few
'basic' programmes for working with Free-DOS. The Odin distribution is also
included in a directory of the compact disk distributions listed above.
Fuzoma distribution:
A boot-strappable floppy disk, with the main purpose of enabling old computers
to be used as learning tools for children. Uniform Resource Locator below.
FUZOMA Educational Software
Enabling old computers as learning tools for children
http://superkeen.com/peacecorpsweblog/learning-software/
Commercial or non-commercial uses
Free-DOS is used by several commercial companies:
Dell includes Free-DOS with the n-series desktop computers. The firm has been
criticised for making those computers more expensive than identical computers
with Windows systems installed in them. Of course, such a criticism assumes
Windows to be somehow better than DOS, and therefore Windows of justice more
expensive. A regrettable and false assumption, which is precisely what the
enthusiasts of DOS are prepared to contest: to flame anyone who dare suggest
that DOS be not a better system than Windows. In addition, Dell often offers
Free-DOS systems installed in computers with advanced features such as dual
core processors, which Free-DOS cannot use in their full potential, although
theoretically a DOS extender could use dual core processors.
Hewlett Packard provides Free-DOS as an option to dc5750 desktop computers,
and to Mini 5101 netbook and Probook laptop portable computers.
ASUS uses Free-DOS to let users boot-strap ASUS main board driver compact
disk to create the SATA device driver disk, needed for Windows versions
before Windows XP SP2.
SpinRite 6 of Gibson Research Corporation, a hard disk drive maintenance and
recovery programme, includes Free-DOS.
Seagate, in the Sea Tools for DOS, loads the Free-DOS kernel.
Solid-State Drive Firmware Update Tool of Intel loads the Free-DOS kernel.
Free-DOS is also used by many non-commercial, independent projects (one of
them is Fuzoma, mentioned above).
Technical characteristics of Free-DOS
Compatibility: MS-DOS and Windows 32 console
Free-DOS is mainly compatible with MS-DOS. Of the Free-DOS kernels mentioned
above, some emulate MS-DOS version 5.x while others emulate MS-DOS version
7.x, and the version number can be changed (for some executables that very
foolishly expect a certain MS-DOS version, like if MS-DOS were the only DOS
system in existence). A few executables made for MS-DOS are not immediately
executable in Free-DOS, but some work round is often possible for executing
them. SCANDISK.EXE is one of such executables, which by virtue of the Life
Cycle Policy of Microsoft is now legally free for personal use (but not for
distribution). Free-DOS includes CHKDSK, DOSFSCK, RECOVER, SPFDISK, and some
other programmes that, considered as a whole, can offer similar functionality
to what SCANDISK offers. Warning: using them incorrectly WILL destroy data.
The documentation must be read ALWAYS, even before attempting to execute them.
Free-DOS has several improvements relative to MS-DOS, mostly involving support
of new standards and technical developments that did not exist when Microsoft
ended support for MS-DOS in 1994, such as internationalisation, Advanced Power
Management TSR (Terminate and Stay Resident in RAM), integrated ASPI, or USB
(Universal Serial Bus). For USB, see another section below in this page.
Free-DOS itself can use FAT 12, FAT 16 or FAT 32, but some programmes included
in Free-DOS can only work with FAT 12 or FAT 16, not with FAT 32 (MS-DOS gave
support to FAT 32 since version 7.1 of 1996, released with Windows 95 B, other
DOS systems with support for FAT 32 are PTS-DOS 32 and some versions of DR-DOS
and PC-DOS). See also the notes in this page about File Allocation Table.
Free-DOS supports .COM DOS executables, standard .EXE DOS executables, .BAT
batch scripts (plus .BTM batch scripts, via 4DOS.COM), and Borland 16-bit
DPMI executables (DOS Protected Mode Interface). It is also possible to run
32-bit DPMI executables using DOS extenders. With the use of HX DOS Extender,
many Windows 32 console application programmes function properly in Free-DOS,
as do some Graphic Interface programmes, such as QEMU or Bochs.
Compatibility: Windows 1.x, 2.x, 3.x
Windows 1.x, 2.x, 3.x are not properly speaking 'operating systems', they may
be better considered graphic interfaces, originally executed on top of MS-DOS.
Free-DOS easily runs Microsoft Windows 1.x or Windows 2.x, and as for Windows
3.x (3.0, 3.1, 3.11, plus 3.2 for the Chinese market) and their corresponding
versions of Windows For Work Groups, which have support for Intel 80386 and
later compatible processors, they can be run in 80386 Enhanced Mode since the
'build 2037' of the Free-DOS kernel.
Compatibility: Windows 95, 98, Millennium Edition
Contrary to the Window systems seen above, Windows 95, 98, Millennium Edition
are not just graphic interfaces executed on top of MS-DOS or of another DOS
system, they are operating systems in their own right, which boot-strap from
MS-DOS. The MS-DOS 7.0 of Windows 95, or the MS-DOS 7.1 of Windows 95 B and
of Windows 98, can be started as DOS session only. With Windows Millennium
Edition, however, a DOS-only session is not normally possible.
Those versions of Windows (95, 95 B, 98, Millennium) use a stripped down
version of MS-DOS as a boot-strap loader. Free-DOS cannot be used as a
replacement boot-strap loader, but it can be installed and used beside those
systems using a boot-strap manager programme, such as the METAKERN included
with Free-DOS. Problems running Windows from other systems result from the
efforts of Microsoft to make their software un-executable in non-Microsoft
DOS systems. This is true even for IBM-Microsoft PC-DOS.
Caldera versus Microsoft: the settlement
By Graham Lea, published in BBC News in January 2000
http://news.bbc.co.uk/2/hi/business/600488.stm
Compatibility: Windows NT, 2000, XP, 2003, Vista, 2008, Seven, Eight
Those operating systems are based on Windows NT, which in 1994 was originally
intended as a server, more than as a desktop operating system.
They do not make use of MS-DOS as a core component of the system. Instead,
they have a single programme known as CMD.EXE, which is all that has been
left of DOS in them, as an atrophied relict emulator of the good old MS-DOS.
CMD.EXE appears as a dialogue box 'command prompt' inside Windows. In old
Windows versions it can occupy the whole screen by Alt + Enter, but in the
new versions of NT-based Windows it remains limited to a part of the screen.
Those Windows systems can use FAT data set systems (FAT 12, FAT 16, FAT 32),
which are used by MS-DOS and by Windows 95, 95 B, 98, Millennium Edition.
However, Windows NT and its derived Windows versions typically use NTFS (NT
File System) by default. Newer versions of Windows use only NTFS. Free-DOS
can coexist with Windows NT in a separate partition of NTFS, or in the same
partition of FAT systems. The Free-DOS kernel can be boot-strapped by adding
it to the Windows NT Boot Loader configuration script, BOOT.INI
Compatibility: React OS
Much of what has been explained for the Windows NT series is also valid for
the React Operating System. The Free-DOS kernel can be boot-strapped by
adding it to the React OS Boot Loader configuration script, FREELDR.INI
LBA, data set systems, drivers, executables, other features
LBA hard disks: depending on the BIOS used, as many as four LBA hard disks
are supported by Free-DOS, each of up to 128 Gigabytes in size (even of 2
Terabytes, in an ideal scenario). Care is recommended when using disks of
sizes beyond 32 Gigabytes, because so far there has been little testing of
Free-DOS in them. Some BIOS (firmwares) support LBA, but they produce errors
with disks of bigger size than 32 Gigabytes. A driver such as OnTrack or such
as EzDrive resolves this problem.
File Allocation Table: FAT 12, FAT 16 or FAT 32 are all fully supported by
Free-DOS, even boot-strapping from any of them. By comparison, stand-alone
versions of MS-DOS supported FAT 12, later also FAT 16, but never FAT 32. The
support for FAT 32 in MS-DOS began only with MS-DOS 7.1, which was part of
Windows 95 B, in the year 1996 (PTS-DOS 32 and some versions of DR-DOS and
PC-DOS also support FAT 32). Three out of the five Free-DOS kernels contained
in the official full distribution of Free-DOS 1.0 are compatible with MS-DOS
7.1, those three kernels work with FAT 12, FAT 16 or FAT 32. The other two
kernels are compatible with MS-DOS 5.0, those two kernels work with FAT 12
and FAT 16, but not with FAT 32. In Free-DOS, as in other systems, FAT 12 is
used only for floppy disks, FAT 16 or FAT 32 for hard disks or other storage
volumes. The current version of FAT 16 is FAT 16 B, since the mid 1980's.
Warning: Some important executables included in Free-DOS, such as DEFRAG.EXE,
work with FAT 12 or FAT 16 but not with FAT 32, therefore any volumes on which
those executables must be used should not be formatted as FAT 32, but better
as FAT 16 for hard disks or similar volumes (for floppy disks always FAT 12).
An alternative solution might be to format the hard disks (or other storage
volumes of high capacity) as FAT 32, then create during the DOS session a
virtual volume in Random Access Memory (which is formatted as FAT 16), then
copy to the RAM volume whatever directories or data sets need to be processed
by DEFRAG.EXE or another executable unable to work with FAT 32, and after
processing those directories or data sets, finally replace them in their
original locations or in new ones.
That solution, however, requires enough Random Access Memory for a virtual
volume of sufficient space, it is only a partial solution (valid for a few
directories, difficult or impossible for an entire hard disk), it is rather
complicated, and it is prone to disaster of losing valuable data if a power
interruption or another accident occur in the process. Such a solution ought
to be applied only if completely unable to work in FAT 16, for instance in a
huge hard disk with LBA access. FAT 16 is definitely preferable with hard
disks of small capacity, and may be possible or recommendable with hard disks
of medium capacity. Only for hard disks of big capacity should FAT 32 be
considered, especially if being limited of Random Access Memory for the
creation of a virtual RAM volume with the necessary space.
Long Names (VFAT file system): Free-DOS can be used with the DOSLFN driver,
which supports Long Names, but most old DOS programmes cannot support Long
Names even with the driver loaded. The EDIT.COM text editor of MS-DOS can do
it, which makes possible the creation, renaming or modification of ASCII
documents with Long Names, directly from the text editor, although it can
also be done from the DOS command line. Also EDIT.COM of MS-DOS can work with
long names after having loaded DOSLFN, but EDIT.EXE of Free-DOS cannot do it.
Free-COM COMMAND.COM, the default command interpreter of Free-DOS, has a DIR
command with the /LFN switch for listing long names, if any, with their short
name equivalents. 4DOS.COM, however, needs a real VFAT data set system for
handling long names, it does not normally work with just a long name driver
in FAT 12, FAT 16 or FAT 32
FFS, FS, EXT2FS, NTFS: Free-DOS has no plans of support for FFS (version two
is now typical of BSD), neither for FS (version three is currently typical of
Minix), nor for EXT2FS (typical of Linux), or for NTFS (typical of NT-based
Windows), but there are some external third-party drivers available for that
purpose. The LTOOLS collection (a counterpart to the MTOOLS collection of
Unics systems) can be used to access EXT2FS, so as to copy data to or from
EXT2FS storage volumes. However, it is important to note that the LTOOLS
collection works with Linux but not with Minix, nor BSD, nor most other Unics
systems, due to the fact that Minix, BSD and most of the other Unics use by
default a data set system (FS or FFS), different from the data set system
used by Linux (EXT2FS). See in the CSS Dixieland page on Unics a solution for
working with Free-DOS from Minix or BSD, using a Free-DOS storage volume or
partition (slice), and making it visible to BSD (or to another Unics) by a
mount point formatted as DOS. Or from Minix, by using the executables
'dosdir', 'dosread', 'doswrite'. NTFS support in DOS is provided by software
such as NTFSDOS or NTFS4DOS.
Some of the most important software available in Free-DOS
HIMEM, EMM386, memory managers for XMS (Extended Memory), or for EMS (Expanded
Memory, Lotus-Intel-Microsoft 3.2 or 4.0 specifications). More details on
those important memory managers are given farther below in this page.
-Several text editors or viewers, EDIT, EDLIN, PG, others:
EDIT.EXE, default text editor of Free-DOS. EDIT.EXE is a clone with some
added features of EDIT.COM, the default text editor of MS-DOS, but EDIT.EXE
of Free-DOS has three important limitations:
EDIT.EXE cannot open documents over 64 Kilobytes (while EDIT.COM of MS-DOS
can open well beyond the Megabyte, if having enough Random Access Memory and
enough storage space for temporary swap copy).
EDIT.EXE uses mostly Windows key strokes (while EDIT.COM of MS-DOS uses
traditional DOS and Word Star key strokes, which means uninterrupted fluency
for fast typists used to work in DOS).
EDIT.EXE cannot work with long names, even if having loaded in Random Access
Memory a long name driver such as DOSLFN.COM (while EDIT.COM of MS-DOS will
create or will open documents with long names, if using a long name driver).
EDLIN, line text editor, small but powerful if correctly used.
PG, advanced text viewer, similar to LIST.COM of Vernon D. Buerg and to the
command LIST of 4DOS.COM command interpreter.
There are other text editors in Free-DOS, including a DOS port of GNU Emacs
called Freemacs (Free Emacs), and a variant of Vi called Vim (Vi Improved),
also ported to DOS. Emacs and Vi are the two text editors most commonly used
in Unics systems. The Freemacs port to DOS lacks the interpreter of LISP
programming language that is included in the original GNU Emacs for Unics
(and in the X Emacs variant for Unics), but Freemacs uses MINT language
instead. The original Vi is still commercially protected, for which reason
several free variants were developed by different programmers in the course
of many years, such as Nvi (New Vi, used in BSD and more recently also in
Minix), Calvin, Elvis, Vile, X Vi, the above mentioned Vim, and some others.
View is a read-only interface of Vi, Ex is a line editor interface of Vi. Ed
is another line editor. The simple Ee (Easy editor), not derived from Vi,
tends to be used by beginners in Unics, who may prefer to avoid the cryptic
commands of the much more powerful Emacs, Vi, and their respective variants.
The documentation of Vim for DOS is exhaustively complete (the best documented
text editor in Free-DOS), but it is a verbatim copy of the Vim for Unics. It
has not been modified for DOS, which means that many features are unusable in
DOS. It is necessary a working knowledge of Unics for efficient work with the
Vim for DOS, for being aware of what can and what cannot be done in DOS. That
is a typical problem of many softwares ported from one operating system or
architecture to another, the lack of an adapted documentation. Besides, Vim
asks for a voluntary donation to a philanthropic project in Africa. Freemacs
does not expect such contributions, but by compensation, the 'documentation'
of Freemacs does not explain anything for working with the editor. The typist
is on his own, trying to discover the meaning of a list of cryptic commands.
The other text editors in Free-DOS are of rather dubious value. Ospedit is
unworkable, and Setedit has a tendency, when opening more than one editing
window, to copy text from one document to the bottom of another document.
That is clearly a programming error, and cannot be corrected by the typist.
It can only be avoided by opening just one window at a time, which seriously
limits the efficiency of the editor for complex work with various documents.
Setedit is a good editor in other aspects, thus it can be used with some care.
The Basic language interpreter Bywater Basic can be used as a simple line editor.
The IDE of Free-Pascal, Arachne Internet client, and some other executables,
can be used as page editors. Those softwares are not intended primarily as
text editors, and therefore their resources for working with text are limited,
but if necessary, it is good to know how to work with them. Even the COPY CON:
command can be used for creation of simple text documents. Instructions for
that are given in the Appendix near the bottom of this page, as 'COPY CON:'.
Conclusion: there is no 'best editor', in Free-DOS, in Unics, or in any other
operating system. If having more than one editor, chances are that all of
them will find partisans, even to the point of indulging in never ending
'holy wars'. From the simple COPY CON:, to the complex Vi or Emacs and their
variants, and everything in between, it all depends on the preferences and
working style of the individual computer operator. Those of us who work with
text extensively, well know the virtues and defects of all those softwares.
FDAPM, APM info, control, suspend, poweroff, boot, ACPI throttle, HLT energy
saving. FDAPM also permits to diminish the speed of a processor, in order to
use old DOS programmes that would run too fast in a modern processor. Typical
speeds of the 1980's were in the range of Megahertz, but as of 2016 they are
measured in Gigahertz, which makes it impossible, for instance, to play old
DOS games, no matter how good the player. SLOWDOWN, SLOWINT1 or CPUCACHE of
Mister Bret Johnson, included in Free-DOS, can also be used for that purpose.
Several boot-strap managers exist. For computers that have more than one
operating system available, a boot-strap manager allows to choose either
Free-DOS or another of those systems at the time of boot-strapping. However,
a boot-strap manager IS NOT a virtual machine (like for instance VM Ware is),
therefore a boot-strap manager does not allow to change from one system to
another in the active session. The computer must be re-started for changing
to another operating system (in Free-DOS, FDAPM can be used for re-starting).
XOSL, fully graphic boot-strap manager (all other boot-strap managers
available in Free-DOS are partly graphic or entirely driven by command line).
SPFDISK and XFDISK, partly graphic partition and boot-strap managers.
FDISK, partly graphic or command line partition and boot-strap manager.
Warning: the Boot Easy boot-strap manager included with FDISK presents
problems. Its use is strongly discouraged by the author of FDISK. Any of
several other boot-strap managers available in Free-DOS can be used instead.
BOOTMGR, command line boot-strap manager, with many features.
GRUB, boot-strap loader, with several ancillary executables.
METAKERN with METABOOT and their ancillary executables, boot-strap loaders.
They work by replacing KERNEL.SYS (or another appropriate Free-DOS kernel) by
a combined kernel that includes the Free-DOS kernel and the boot-strap sector
of another operating system (typically another DOS). There are two different
methods for doing those operations, the documentation must be read CAREFULLY.
Either method assumes a good knowledge of DOS systems. Not for DOS beginners.
For external volumes such as floppy, compact, or digital video disks,
Free-DOS has software for various purposes, part of which is listed below.
XDMA and XDVD, UDMA drivers for hard disk or for DVD player.
XCDROM, driver for CD-ROM.
LBACACHE, cache for hard disk or floppy disk.
SHSUCDX, used to access compact disk (in lieu of the MSCDEX of MS-DOS).
MPXPLAY, mp3, ogg, wmv interface player, with built-in AC97 and SB16 drivers.
Software for other uses comes next. The list is far from complete.
SHSURDRV, creates several RAM volumes of fixed size, up to 4 Gb each
SRDISK + SRDXMS, create only one RAM volume but resizeable, up to 4 Gb
JLM, possibility of writing 32-bit protected mode drivers Jemm Loadable Module.
CUTEMOUSE, mouse driver with scroll wheel support.
7ZIP, INFO-ZIP, BZIP2, ZIP, UNZIP, archivers, compressors-expanders.
GRAPHICS, screen shot, for grey scale hardcopy in ESC/P, HP PCL, Post Script
printers.
FDUPDATE, update installer. Mister Mateusz Viste indicates that FDUPDATE is
not currently used in Free-DOS. Instead, the far superior FDNPKG is used at
present. The Uniform Resource Locator of FDNPKG is part of Source Forge:
FDNPKG
Update installer for Free-DOS, in lieu of FDUPDATE
http://fdnpkg.sourceforge.net/
FDSHIELD.COM, tries to prevent malicious executables, scripts, or operator
errors, from tampering with the boot-strap sector or the operating system,
destroying data, or playing other 'jokes' of bad taste. FDSHIELD scans for
possible viri, worms or Trojan horses by monitoring some potentially risky or
threatening activities, which can be defined by command line switches when
loading FDSHIELD into Random Access Memory. Cache writes must be flushed to
storage volume often, because FDSHIELD may halt the session with no more than
20 seconds of warning, losing possibly valuable work. Known safe software, if
foreseen to be needed for the DOS session, must be loaded or executed before
loading FDSHIELD. That warning includes FDISK, FORMAT, SYS or similar low
level access executables, and most 'Terminate and Stay Resident' software.
FDSHIELD cannot be unloaded, the session must be re-started without FDSHIELD
if necessary. FDSHIELD is the work of Mister Eric Auer, and its very well
explained documentation has been written by Mister Walt Gregg. IT MUST BE
READ COMPLETELY BEFORE USING FDSHIELD, otherwise undesirable things might
happen. Fortunately, malicious codes for DOS systems are not as common in
2016 as they were in the 1980's and early 1990's, but some may still lurk in
vintage software. A novice computer operator in need of performing frequent
downloads or updates through a network or another medium, should protect his
system with FDSHIELD, TBAV, VSAFE, VWATCH, or another anti-malicious software
(of them, only FDSHIELD is included in Free-DOS, the others were commercial).
BitTorrent client.
Many text mode programmes ported from Linux to DOS, thanks to DJGPP Delorie.
Translators or interpreters for computer languages:
-For Assembly:
WASM Wolfware Assembler, very well documented (not to confuse with Watcom
Assembler, which is not available in Free-DOS).
FASM Flat Assembler, acceptably documented.
ASM Arrowsoft Assembler, poorly documented.
NASM Netwide Assembler, no documentation at all.
-For Basic:
Bywater Basic interpreter, similar to Microsoft QBasic (there is another
implementation of Basic programming language called 'BWBasic', unrelated to
Bywater Basic). Bywater Basic implements a superset of the X3.60 specification
of 1978, the ANSI Standard for Minimal Basic, and a significant subset of the
X3.113 specification of 1987, the ANSI Standard for Full Basic. It also offers
shell programming facilities as an extension of Basic. Bywater Basic seeks to
be as portable as possible. It does not support the function PEEK() or the
command POKE to address memory locations, because those features are system
specific. For the same reason, VARPTR or DEF SEG are not supported either.
Line numbers are optional in Bywater Basic. The Bywater Basic source is written
in C language. Bywater Basic can be used as a line text editor, for creation
or modification of text documents.
Free-Basic translator, a 32-bit Basic compiler for many platforms, similar to
Microsoft Quick Basic. Free-Basic has ports for DOS, Linux, Windows, and other
operating systems. The DOS port needs DOS Protected-Mode Interface (using CWSDPMI,
HDPMI16 or HDPMI32, available in Free-DOS). Free-Basic only supports Latin character
set, and does not support Unicode. It includes GDB.EXE, the GNU debugger. Free-Basic
does not support the command POKE to address 16-bit absolute memory locations, because
that feature is system specific, but the statement POKE and the function PEEK() are
supported. For the same reason, DEF SEG is not supported either, but VARPTR is supported
by Free-Basic (by comparison, Bywater Basic does not support any of them). Line numbers
are optional in Free-Basic. It accepts source of up to 2 Gigabytes in size. Free-Basic
allows in-line Assembly, Intel syntax. The Free-Basic source is written in Free-Basic
(therefore it can translate itself). Mister Von Godric has created FBIDE, an Integrated
Development Environment for Free-Basic.
-For BAT (interpreted) batch scripts:
Free-COM COMMAND, command line interpreter, supports completion of names.
Free-COM COMM8086, command line interpreter, for Intel 8086 or compatible.
DOG, command line interpreter, with two-letter command names inspired on Unics.
-For BAT (interpreted) or BTM (translated) batch scripts:
4DOS, enhanced command line interpreter, with many features and excellent
documentation. 4DOS is the most advanced command line that exists for DOS.
Note: Arachne Internet client does not show volumes, directories or data sets
under 4DOS, because that function is done by the executable WWWMAN.EXE (not
by CORE.EXE). Free-COM can be used for the purpose, or also shelling to DOS
and using normal DOS commands, then returning to Arachne by entering 'exit'
at the prompt, but Arachne works well under 4DOS in most other aspects.
-For C language:
Pacific C translator, with Integrated Development Environment.
Watcom C translator, very used at present (there is a Watcom Assembler, which
as of the latest information available to us, is not included in Free-DOS).
DJGPP translator, produced by D. J. Delorie and also very used at present.
The inclusion of Watcom C and of DJGPP in this list has been possible thanks
to the advice offered by Mister Mateusz Viste, of Free-DOS, to CSS Dixieland.
-For Hyper Text Mark-up Language, interpreters Arachne, Lynx and HTMLHELP:
Arachne, graphical Internet user agent, on-line or off-line viewer.
Arachne is the most advanced Internet user agent for DOS (Caldera Web Spyder
is derived from Arachne). It uses WWWMAN.EXE (included in the distribution)
for showing and accessing from inside Arachne the directories and data sets
that exist in different storage volumes (floppy disks, hard disks or their
partitions, USB devices, compact disks, RAM volumes, et cetera). However,
WWWMAN.EXE cannot work with 4DOS.COM command interpreter, therefore for using
Arachne as a data set manager, it is suggested to start Free-COM COMMAND.COM
as primary or as secondary command interpreter. Alternatively, it is possible
to shell to DOS from inside Arachne, look at the directories or data sets by
normal DOS commands, and return to Arachne by entering 'exit' at the prompt.
Arachne has full support for the protocols HTTP-HTML, Mailto (POP3, SMTP),
Finger and FTP, plus a limited support for Gopher. By means of external
software, Arachne can perform Telnet and IRC sessions. Arachne interprets a
good part (though not all) of HTML 4.01 and also of CSS 1.0 instructions, in
data sets of up to about 1 Megabyte, or it can show ASCII plain text in data
sets of up to about 3 Megabytes. Arachne has full support for images in GIF
(Compuserve) format, partial support for BMP format (the Windows variant, not
the IBM variant). Arachne uses DJPEG.EXE (included) to convert from JPG to
BMP or to GIF, and JPNG2BMP.EXE (included) to convert from PNG to BMP.
Arachne can use PLANY.EXE (included) for sound through Sound Blaster in audio
formats: VOC (Sound Blaster), MOD, 8SVX, IFF (Amiga), AU (Sun, NeXT, DEC),
SND (Sounder, Soundtools), WAV (Windows). It can also use SPKRWAV.APM (not
included) for sound through the computer speaker, QV.EXE (not included) for
MP3 audio or MOV, AVI video, VMPEG.EXE (not included) for MPG video. Using
MAILMAN.EXE (included), Arachne can convert electronic post messages to HTML.
It can detect UUencode (Unics), BINHEX (Macintosh), and work with any MIME 1.0
type using a built-in DGI. Arachne does not support Java Applets, nor Java
Script. The user agent is well documented, and with an active community of
users who help other users by means of a posting list of free subscription.
DOS Lynx, text-only (not graphic) Internet user agent, on-line or off-line
viewer for CSO (PH QI), Finger, FTP, Gopher, HTTP-HTML (WWW), NNTP (Usenet),
POP3, SMTP, WAIS, X.500, and other protocols. Being originally from Unics, DOS
Lynx needs extensive reconfiguration for Free-DOS. DOS Lynx needs a packet
driver, even for opening local documents, and oddly enough no network packet
driver has been included in the distribution of DOS Lynx. Only a fake packet
driver called Nullpkt is indicated in the documentation for opening local
documents, but not included in Free-DOS. Besides this serious limitation, DOS
Lynx needs almost 600 Kilobytes of Low Memory, which may imply the need of
boot-strapping the DOS system with less than 40 Kilobytes, out of the 640
Kilobytes of maximum executable programme size in the Megabyte of Low Memory
that can be directly accessed by DOS in Real Mode. It means that most other
softwares cannot co-exist with DOS Lynx in Random Access Memory.
HTMLHELP (stored as HELP.COM or HELP.EXE), off-line textual HTML viewer, can
read directly from a document previously compressed by Zip algorithm. Limited
to documents of maximum 64 Kilobytes. It only supports a few HTML entities.
-For Gopher Protocol:
Gopherus is the best user agent for accessing Gopher documents from DOS. Its
colours can be fully customised, if using polychrome screen and video card.
They can even resemble the classic phosphor cathodic ray tube screens of the
1980's. Gopherus follows the official Gopher Standards RFC 1436 (The Internet
Gopher Protocol) and RFC 4266 (The Gopher URI Scheme). Gopherus needs a packet
driver loaded in Random Access Memory. There are ports of Gopherus for DOS,
BSD, Linux, and Microsoft Windows Operating Systems.
-For MINT (similar to LISP):
Freemacs (Free Emacs) text editor.
-For Pascal:
Free-Pascal translator, with Integrated Development Environment. Free-Pascal
is poorly documented in Free-DOS (and the I. D. E. is almost undocumented),
but for the experienced programmer Free-Pascal offers many features. Those
features are only mentioned in the distributed documentation, the details are
left for download from the Free-Pascal Internet host-server. The documents
assume a DEEP knowledge of Pascal programming. They are not tutorials for the
beginner. They are available in the formats HTML (Hyper Text Mark-up Language),
ASCII (American Standard Code for Information Interchange) 7-bit plain text,
PDF (Adobe Portable Document Format) or PS (Post Script) at the Uniform
Resource Locator:
Free-Pascal
Translator for several platforms, with Integrated Development Environment and
Assembly support
http://www.freepascal.org/
Free-Pascal is available for the microprocessors Intel 80386 or compatibles,
AMD 64, Motorola Power PC and Sparc, and for the operating systems BSD
(several variants), Linux, Macintosh (Classic and Darwin), IBM OS/2 and
Microsoft Windows. An old version called FPK-Pascal is available for Commodore
Amiga. A port to Be OS is being made, and to some BSD variants. There is a
port included in Free-DOS, using the Go32 version 2 DOS extender of D. J.
Delorie. The dialect of Free-Pascal is almost like that of Borland Turbo
Pascal and of Delphi Pascal, with some similarity to Macintosh Pascal.
Free-Pascal is written in Pascal and can translate itself. The resulting
executables made by Free-Pascal are of HUGE SIZE by default, but they can be
made about a fourth or a fifth of that size by using any or all of the
following switches in the command line:
-Og (Small size. Slower execution, but still fast in DOS)
-Op1 (Intel 80386, 80486 or compatibles. Default is Pentium)
-Sg (Allowing LABEL or also GOTO instructions in the source)
-Xs (No symbols in executable. No easy debug, but small size)
-XX (Smart linking, and consequently small size)
Free-Pascal supports in-line Assembly, by default with AT & T syntax (as in
GNU-Pascal), but Free-Pascal can be instructed to accept Intel syntax (as in
Borland Turbo Pascal), and it can translate from a Pascal source to a workable
Assembly source for GAS (GNU Assembler), MASM (Microsoft Assembler), NASM
(Netwide Assembler), TASM (Borland Turbo Assembler), or WASM (Watcom Assembler,
not to confuse with Wolfware Assembler). Of those assemblers, only NASM
(Netwide Assembler) is available in Free-DOS, but without documentation.
Free-Pascal can produce executable machine code, native in DOS or in IBM OS/2
operating systems. As said above, Free-Pascal is an excellent choice for the
experienced programmer, but also a ban for the beginner. There are Pascal
tutorials in Internet, albeit attention must be paid to dialectal differences.
Pascal has not so many dialects as Basic, but some of them it has. Free-Pascal
was started by Herr Florian Klaempfl, Germany.
Programmers looking for portability might do better in choosing GNU-Pascal
(not distributed in Free-DOS), rather than Free-Pascal. The reason is that
GNU-Pascal follows several Official Standards:
-'Portable Operating Systems Interface for Computer Environments' (often
abbreviated as POSIX) of the Institute of Electrical and Electronics
Engineers (IEEE).
-ISO 7185 and ISO 10206 of the International Standards Organisation (ISO).
-Most of Borland Turbo Pascal 7.0 (proprietary, not official standard).
By contrast, Free-Pascal follows only Borland Turbo Pascal, which is not an
official standard, it is only a proprietary dialect created by a private
corporation. GNU-Pascal supports in-line Assembly, AT & T syntax. GNU-Pascal,
however, is not written in Pascal but in C language, therefore it cannot
translate itself. GNU-Pascal was started by Herre Jukka Virtanen, Finland.
GNU-Pascal
Translator for many platforms, with Assembly support. Official Standards IEEE
POSIX, ISO 7185 and ISO 10206
http://www.gnupascal.org/
Basic (since the 1960's) and Pascal (since the 1970's) are two programming
languages used until today. They have respectively passed of fifty and forty
years of age as of 2016, and they continue with enthusiasts. Another option
worth considering is the Ada language. In 1843 Lady Ada Augusta Countess of
Lovelace enlarged a description (written by an Italian mathematician) on the
Analytic Calculator of Mister Charles Babbage. Lady Ada was thus the first
person to offer a detailed explanation of what is now known as 'coding' or
'programming'. Her work was not carried beyond the pure theory (the first
practical language came exactly a hundred years later, the 'Plan Kalkul' of
Herr Konrad Zuse in 1943), but with her pioneer effort, Lady Ada is now
considered the first computer programmer in History. Ada, the Universal
Programming Language, was created in 1979 by the United States Department of
War, in a similar way to the creation of Cobol twenty years earlier. In 1981
Ada became official standard for all military applications in the United States.
Ada is based on Pascal, combined with other languages, and considered the
most advanced programming language ever created. It was intended as a lingua
franca of programming, applied also to scientific or commercial purposes and
to computing systems. Since the 1990's Ada is easily available in Internet in
the usual form of translators, debuggers, official specifications, tutorials,
and other tools that programmers need for efficient work. One advantage is
that Ada has only a few versions and they are backward compatible: Ada 83,
Ada 87, Ada 95. By comparison, Pascal has some dialects, and Basic has many
dialects, which are not compatible at all. Ada includes support for object
oriented programming, protected types, and many other features. Like Pascal,
Ada forces the programmer to a 'military discipline' that some people dislike,
but which encourages correct habits. As of 2016 there is a free GNU-Ada, some
Web documents entirely devoted to the Ada language, and other resources that
facilitate Ada to the serious programmer. The main hyper link is given below.
Ada Power
Resources for Ada, Universal Programming Language
http://www.adapower.com/
-For Rexx:
Regina Rexx interpreter
Emulators of DOS in other operating systems:
DOSBox: dialogue box to call DOS in Windows 95, 95 B, 98 or Millennium, and
to emulate DOS (by CMD.EXE) in Windows NT series or related systems.
DOSEMU: emulator of DOS in BSD, GNU Hurd, Linux, or other Unics systems.
Universal Serial Bus
Free-DOS version 1.1 includes resources that do not exist in version 1.0, of
which the most useful is perhaps the support for Universal Serial Bus. It is,
however, only a partial support. Its programmer, Mister Bret Johnson, has
been unable to obtain permission for including in the official Free-DOS
distribution the USB drivers for DOS that Panasonic Japan has had available
for years at its Web document in Japanese language. The drivers are publicly
available, but Panasonic intends them for being used in Panasonic products.
Nonetheless, Mister Johnson has written an extremely long and well composed
document, included in the Free-DOS 1.1 distribution, which explains in detail
all that there is to know about USB. A courageous soul might thus embark into
the difficult task of programming USB drivers for DOS, thus hopefully siding
with Mister Johnson and helping the Free-DOS Project.
Many modern mother boards contain BIOS settings for Legacy USB support, which
allows USB devices to be used in operating systems that lack support for them
(such as Free-DOS version 1.0). This applies to mice or other pointing devices
or to keyboards, and some BIOS can even support storage devices. Some external
DOS USB drivers for storage devices work in Free-DOS with some effort and luck,
such as DUSE, USBASPI or USBMASS. There is also DOSUSB, which offers an API
and supports storage devices, printers, or serial adapters. An alternative to
running DOS programmes for USB devices is running DOSBox, mentioned above,
which recognises USB devices from the host operating system to act as if they
were legacy port devices. For instance joy sticks with game ports, printers
with parallel ports, or USB flash memory volumes, would act in DOS as if they
were a hard disk. However, DOSBox requires to be executed from an operating
system with a graphic interface and with support for USB, thus difficult in
Free-DOS, because it would take us back to the problem of USB drivers for DOS
and because the only graphic interface in Free-DOS is the rather simple GEM.
Information on all known possibilities for Universal Serial Bus to work in
DOS is contained in the following documents:
Boot Disk
Four Methods for USB Volume Drives to work in DOS
http://www.bootdisk.com/usb.htm
Boot-strapping
Free-DOS can be boot-strapped from a floppy disk, from a hard disk, from a
live compact disk, or from a USB flash memory volume.
Free-DOS can also be run using virtualisation software such as Virtual PC
or Virtual Box, or using emulation software such as Bochs or QEMU.
To use the Windows Boot-strap Menu the following line can be added to
BOOT.INI:
[volume:[path]]FDOSBOOT.BIN="FreeDOS"
To boot-strap using GRUB, the following lines (or something similar) can be
added to MENU.LST:
# Any title that you want
title Free-DOS
# 'x' is device, 'y' the partition (slice) where Free-DOS is located
root hd(x,y)
# Boot-straps the boot-strap loader of Free-DOS, optionally keeping
# the name of the kernel as KERNEL.SYS (the name can be changed)
chainloader /kernel.sys
How to Create a Bootable Free-DOS Floppy Disk
Published by Linfo, July 2005
http://www.linfo.org/freedos_floppy.html
Install Free-DOS without CD, floppy, USB or any other removable medium
By Marc Herbert, October 2004
http://marc.herbert.free.fr/linux/freedos_no_removable.html
Memory management
Free-COM, the default command interpreter of Free-DOS (stored with the name
of COMMAND.COM), can move portions of itself into extended memory in order to
free low memory for programmes, which can then find available for them up to
620 Kilobytes. This is useful for old DOS programmes that can only use low
memory (they cannot use extended or expanded memory).
The main memory management programmes included with Free-DOS are HIMEM.EXE
for providing extended memory (XMS), and EMM386.EXE for providing expanded
memory (EMS), for old software executed in real mode. For preventing conflict
with MS-DOS, EMM386.EXE can be renamed for instance FDEMM386.EXE, or it can
be moved to another directory and be called thence at boot-strap. HIMEM.EXE
does not present such a conflict, because in MS-DOS it is not an executable,
but a driver called HIMEM.SYS
EMM386 also supports VCPI, which allows DPMI kernels and DOS extenders to
coexist with it. Free-DOS also contains an UDMA driver for fast disk access,
which is also compatible with other DOS systems. The LBAcache disk cache
stores recently accessed disk data in XMS for fast access and less direct
disk access.
Free-COM command interpreter
Full list of commands for COMM8086.COM
and for COMMAND.COM version 1.15 of 2006
Command line interface interpreters of Free-DOS.
This information refers to Free-COM COMM8086.COM for Intel 8086 or compatible
processor, and to Free-COM COMMAND.COM for Intel x86 or later compatible
processors. Regarding COMMAND.COM, part of the information refers to version
0.82 pl 3ak of August 2004, version 0.83, or version 0.84 pre 2 of August 2006.
After permission kindly granted by their respective legal holders, the full
official distribution of Free-DOS includes two other command interpreters and
a full featured command line editor:
4DOS.COM, advanced command interpreter with many resources.
DOG.COM, command interpreter with keywords inspired on Unics.
CMDEDIT.EXE, command line editor with aliases and key assignment.
Sections in this page
Introduction: Installation, features, prompt
Free-COM COMM8086.COM
Free-COM COMMAND.COM
Command Line Editing: History
Command Line Usage: Switches, Options
Environment Variables
EBNF, Extended Backus-Naur Formula
Internal Commands of Free-COM
Appendix
Version history of Free-COM
Download Free-COM
CVS Resources
Bugzilla bug hunter
Kernel-supported Swapping
Hyper links and references to Free-COM
Introduction: Installation, features, prompt
Free-COM is composed of two independent executables, by default stored in
Free-DOS with the names of COMMAND.COM and COMM8086.COM, although the names
can be changed. Free-COM is a command line interface, which can be used as a
primary or as a secondary command interpreter, also known as a shell. The
command interpreter is one of the most important components of an operating
system, after the kernel and the Input-Output algorithm (in Free-DOS the
Input-Output algorithm is contained within the kernel, in most other DOS
systems it is separated).
Free-COM has been spawned as part of Free-DOS, one of the most advanced and
sophisticated DOS operating systems that exist or have existed, and which
aims to implement everyone of its parts licenced for free use, under the GNU
General Public Licence or under other licences spousing a similar spirit. The
Uniform Resource Locator of Free-DOS is:
http://www.freedos.org/
The above Uniform Resource Locator contains a sample description on "How to
compile Free-COM in ten steps", informing of the procedure and options for
translating the source programme of Free-COM into its executable. A Free-COM
executable with default options is included in every distribution of Free-DOS.
The main duty of Free-COM is to prompt the human operator for entering
commands at the command line, a line also known as the "prompt", because
the command interpreter prompts (requests) the operator for giving commands
(instructions), to which the computer must take some action.
The command line is the most efficient, flexible and fast way for interacting
with the computer. A maven of the command line can perform impressive feats,
much beyond what is possible by using funny graphic interfaces. Paraphrasing
and inverting a well known advertisement of Apple Macintosh in 1984, much in
the spirit of the futuristic story by George Orwell, the command line is FOR
US (enthusiasts and deep connoisseurs of computers), while the graphic
interface is 'for the rest of them' (the mass of ignorant people who use
computers, perhaps on a daily basis or almost so, but who do not know how
computers work).
When Apple released its graphic-interface Macintosh platform in 1984, the
command line was the predominant way of interacting with a computer. A few
graphic interfaces already existed before 1984, such as the Alto graphic
interface of Xerox at Palo Alto Research Centre, which inspired OS/2 (graphic
interface released by IBM in 1994), and some other graphic 'shells', but they
were used by only a handful of people. The Windows graphic interface of
Microsoft Corporation did not exist (it began in 1985, as a component of
MS-DOS). By contrast, when Free-DOS version 1.0 was finally released in 2006,
the graphic interface was already ubiquitous in the world of computers, and
the command line had gradually become the domain of a handful of computer
experts or enthusiasts.
Free-DOS includes the GEM Graphic Environment Manager (originally from DR-DOS)
for those people who feel more comfortable interacting by means of a graphic
interface, and some other graphic interfaces can also be used in Free-DOS,
but the focus of Free-DOS is centred on the command line, as well as the
focus of GNU Hurd, of most BSD systems (except PC BSD, which is graphic), of
some Linux distributions, of some other Unics systems, and of a few other
systems. Like the lovers of Free-DOS, also the lovers of those systems know
the power that is hidden inside the command line.
The commands written at the command line are interpreted, then either they
are processed directly by the internal commands of Free-COM, or they are
executed as external commands, this is, as programmes that are not part of
Free-COM, but which Free-COM can call for execution.
Non-internal commands, which cannot be processed directly by Free-COM, are
called external commands because Free-COM will search for programmes equally
named as they have been typed into the command line.
If specifying only the name of that programme, without specifying the type,
then the priority (search order) of Free-COM will be COM, EXE, BAT inside the
current directory, and again COM, EXE, BAT in each directory defined in the
PATH environment variable, and finally the ALIAS list.
For instance, let us suppose that the data sets FROBU.COM, FROBU.EXE and
FROBU.BAT be all in the current directory. By entering only:
FROBU [ENTER]
Then FROBU.COM will be executed. If wishing to execute FROBU.EXE or FROBU.BAT
instead, then the type .EXE or else the type .BAT must be included at the
command line, or from a batch process script. The same holds true for every
directory included in the PATH environment variable, or for every conversion
(expansion, usually) of an ALIAS to an executable command.
Besides implementing certain internal commands, Free-COM also offers some
features that enhance the work with the computer.
Free-Com has been developed by many collaborators. It is separate from the
DOS-C kernel of Free-DOS, and may or may not work properly under it. Every
effort is being made for compatibility between the two, Free-Com and the
DOS-C kernel of Free-DOS.
Installation
To use Free-Com, execute either COMM8086.COM or COMMAND.COM, or add this line
near the end of FDCONFIG.SYS or equivalent start configuration:
SHELL=[ [vol:] \path] \shell name /switches
For example, with Free-Com named COMMAND.COM, located in the FREEDOS directory
of the C: volume, and optionally specifying by the /P switch a batch start
process script named FDAUTOEX.BAT, then the line is:
SHELL=C:\FREEDOS\COMMAND.COM /P=FDAUTOEX.BAT
The /P switch also makes the shell permanent. As for the batch start process,
without the /P switch it would receive the default name of AUTOEXEC.BAT,
meaning that it could not coexist in the same directory of the same volume
with another batch process equally named, but intended for another DOS system.
Features of Free-COM
Environment handling with prompt and path support
Support to load in high memory
Support to create aliases
Non-complete support for several languages
Batch processing
Flow control (IF, FOR, GOTO, labels)
Input or output with redirection and piping
Directory utilities
Command-line history, with features similar to the DOSKEY programme of MS-DOS,
and with completion of names by the Tab key.
Long names, if having previously loaded a driver such as DOSLFN.COM
User Prompt
Free-COM knows two modes:
-Interactive mode
-Batch processing mode
The second one performs batch process scripts, which are more or less a
sequence of commands written in a text document. Such documents may contain
any external commands, internal commands, or calls to other batch process
scripts. In a few instances, such as the definiton of variables, a command
written in the batch process script is slightly different from a similar
command written directly at the command line (at the prompt).
In interactive mode Free-COM prompts the human operator to enter a command.
The line is interpreted, parsed, and finally either rejected because of an
error, or executed.
There is below a short information on Free-COM COMM8086.COM, the rest of the
page refers to Free-COM COMMAND.COM
Free-COM COMM8086.COM
Free-COM command interpreter of Free-DOS for Intel 8086 or compatible processor
Free-COM COMM8086.COM accepts the following switches:
COMM8086 [[vol:]path] [device] [/E:nnnnn] [/L:nnnn] [/U:nnn] [/P] [/MSG]
[/LOW] [/Y [/[C|K] command]]
[vol:]path
Specifies the volume and directory containing COMM8086.COM
device
Specifies the device to use for command input and output
/E:nnnnn
Sets the initial environment size to nnnnn bytes, where nnnnn should be
between 256 and 32768
/L:nnnn
Specifies internal buffers length in nnnn bytes, where nnnn should be between
128 and 1024 (requires /P as well)
/U:nnn
Specifies the input buffer length in nnn bytes, where nnn should be between
128 and 255 (requires /P as well)
/P
Makes the new command shell permanent, it cannot exit by the EXIT command
/MSG
Stores all error messages in memory (requires /P as well)
/LOW
Forces the command shell to keep its resident data in low memory
/Y
Steps through the batch program specified by the /C or the /K switch
/C command
Executes the specified command and returns
/K command
Executes the specified command and continues running
Default name of the command interpreter
As a secondary shell, COMM8086 can be directly executed with that name or it
can be renamed. However, as a primary shell, the kernel of Free-DOS will by
default look for a command interpreter named COMMAND.COM at the top level of
the volume being boot-strapped. This default behaviour can be modified from
FDCONFIG.SYS or equivalent start configuration, as explained above, but in
this case with a line such as:
SHELL=C:\FREEDOS\COMM8086.COM /P=FDAUTOEX.BAT
Assuming in that example that COMM8086.COM be located inside the directory
FREEDOS of volume C:, and making COMM8086.COM a permanent shell (it cannot be
exited without removing the /P switch and boot-strapping again, but it can
call a secondary shell). If not finding COMM8086.COM where indicated, then
the kernel will ask for the full path to that or another command interpreter
by the message:
'Bad or missing command interpreter. Enter the full shell command line'.
At this point any command interpreter can be chosen if knowing its location
and name, by telling the kernel the full path where that interpreter be stored
(the volume and full path, if in other than in the current volume), specifying
also the .COM type (extension), and optionally passing arguments to the main
executable of the interpreter, then pressing ENTER. Start batch processes
such as .BAT or .BTM cannot be invoked from this command line of the kernel,
but the chosen interpreter may find and execute a batch process, if available,
and from that initial batch process others may optionally be called. Free-COM
can only execute .BAT batch processes, not .BTM ones. The difference is that
.BAT is interpreted line by line, while .BTM is translated into memory as a
whole (4DOS.COM command interpreter can be used for .BTM batch processes).
Assuming COMM8086.COM being located in the current directory of the current
volume, then it can be started as a secondary shell by entering:
COMM8086.COM
And pressing the ENTER (RETURN, NEW LINE) key. If having COMM8086.COM located
in another directory or in another volume, then the above command line should
be modified accordingly. For example, assuming COMM8086.COM being located at
the top level of the floppy disc in the A: volume drive, the line would be:
A:\COMM8086.COM
And pressing the ENTER key. In any case, arguments can be passed to the
executable of the chosen command interpreter. For instance, the COMMAND.COM
of MS-DOS allows a minimum size of 160 bytes, but the Free-COM of Free-DOS
starts at 256 bytes. Although the following line is unnecessary because it
specifies a default value, it is given as a safe working example. It extends
the previous example by specifying an initial environment size of 256 bytes:
A:\COMM8086.COM /E:256
It is also possible to have a start configuration for a command interpreter,
and for many other options. The kernel will look at boot-strap for an ASCII
plain text called FDCONFIG.SYS, or secondarily for CONFIG.SYS, and if finding
any of them in that order, at the top level of the boot-strap volume, then it
will follow the configuration instructions given there. From FDCONFIG.SYS or
CONFIG.SYS one or more batch start processes may also be called. The default
name is AUTOEXEC.BAT, but from FDCONFIG.SYS or CONFIG.SYS that name can be
changed to for example FDAUTOEX.BAT, so as to prevent conflict with another
start batch process, intended for another DOS system, which might be present
in the same volume and directory. Alternatively, the path to the correct
batch start process may be given from FDCONFIG.SYS or CONFIG.SYS
The following line is typically near the end of FDCONFIG.SYS or equivalent
start configuration. It calls from the current directory of the current
volume COMM8086.COM as the primary shell. The /MSG switch instructs the
command interpreter for storing all error messages in Random Access Memory,
thus giving faster access than if storing them in fixed disk (hard disk), and
much faster than if storing them in floppy disk. The /MSG switch should be
used only if having sufficient memory available for the error messages. The
/P switch is necessary when using the /MSG switch. Optionally the /P switch
specifies here a batch start process named FDAUTOEX.BAT
SHELL=COMM8086.COM /MSG /P=FDAUTOEX.BAT
Computers with very limited RAM may not be able to afford the use of their
tiny memory for storing messages from the command interpreter. In such a
Spartan scenario, it is better to avoid the /MSG and /P switches altogether.
As for the batch start process, without the /P switch it would receive the
default name of AUTOEXEC.BAT, meaning that it could not coexist in the same
directory of the same volume with another batch process equally named, but
intended for another DOS system.
Computers with very limited RAM obviously cannot create a RAM volume. If they
lack fixed disk (hard disk), and possess only one floppy disk drive, then this
really is the most heroic scenario, but Free-DOS can cope with that. The
system can be boot-strapped from the floppy, and the command interpreter will
VERY OFTEN prompt the human operator for swapping floppies in the only drive
available, because the shell needs access to its own executable when retaking
control of the operating system, after the release of control by another
executable.
An operation such as copying from one floppy to another is a pain. A few
sectors or clusters are copied from the first floppy to RAM, then a prompt to
switch to the second floppy and press any key to continue, then those sectors
or clusters are copied from RAM to the second floppy, then a prompt to switch
to the first floppy and press any key to continue, and the sequence is thus
repeated with all the data sets that have to be copied, expanded along sectors
of 512 bytes standard size (although sector size can be changed to 256 or 128
bytes IF REALLY NECESSARY at the time of formatting the floppy).
A person working with a tiny-RAM, floppy only-system, single-floppy drive,
should not feel frustrated. He should treasure his old machine as a valuable
legacy from by-gone yester eras. Not 'jester' eras, because after all, that
is the way things were with most microcomputers in the second half of the
1970's and first half of the 1980's, and there is the assurance of the well
known EXPERT Mister Bill Gates, of Microsoft Corporation, who in the early
1980's boldly declared that 'No body will ever need more than 640 Kilobytes'.
Of course, that lack of foresight happened before he chose to castigate the
World with the mastodontic Windows System, which now needs several Gigabytes.
Free-COM COMMAND.COM version 1.15 of 2006
Free-COM command interpreter of Free-DOS for Intel x86 or later compatible
processors
Part of the information refers to version 0.82 pl 3ak of August 2004, version
0.83, or version 0.84 pre 2 of August 2006
Free-COM COMMAND.COM accepts the following command line syntax:
[':'] ['?'] ['@'] ['*'] {command [{argument | redirection}] : '|'}
redirection ::= ('<' | '>' | '>>') datasetname
The first optional '?' must not be mixed with the command '?!'
Description:
The colon ':' marks the line as a label, which allows Free-COM to ignore the
line completely. No interpretation is tried of this line, neither are any
redirections created.
The interrogation '?' forces Free-COM to enable the trace mode for this line.
In trace mode Free-COM prompts the human operator whether or not to execute
the resulting command.
The optional at '@' disables the echo status for this line. If the echo status
be enabled, then the line is shown immediately before being executed. See the
ECHO command.
The asterisk '*' is available only if aliases have been compiled into Free-COM.
If present, then the alias expansion is skipped.
If commands be chained with the pipe '|' symbols, then those commands will be
executed as a pipe. For instance, the command line:
cmd1 | cmd2 | cmd3
Forms a pipe consisting of the three individual commands 'cmd1', 'cmd2',
'cmd3', where the standard output stream of 'cmd1' is connected to the
standard input stream of 'cmd2', and the output of 'cmd2' to the input of
'cmd3'.
DOS can be made to swap tasks, using programmes such as DOSAMATIC or HOMEBASE
(included in the Bensley distribution hyper linked above), but because DOS is
not normally a task-swapping environment, then pipes are simulated as a data
set, and the above pipe with three commands will look like this:
cmd1 >%TEMP%\cmd###1.tmp
cmd2 <%TEMP%\cmd###1.tmp >%TEMP%\cmd###2.tmp
cmd3 <%TEMP%\cmd###2.tmp
The data sets are temporary ones, and will be removed as soon as they be no
longer required, meaning that the 'tempfile #1' will be removed after the
'cmd2' have terminated, and the 'tempfile #2' upon termination of 'cmd3'.
Redirections tie the standard input or output stream to a data set or to a
device. For instance:
cmd arg <indoc >>outdoc
Redirects the standard input stream of 'cmd' to the document 'indoc' and the
standard output stream to the document 'outdoc'.
The double output redirection indicated by the two 'greater than' symbols
>> specifies to append at the end of an existing document, instead of
overwriting that document.
Command Line Editing: History
Free-COM offers two methods to enter command lines interactively:
1. Standard input: it calls a DOS function
2. Enhanced input: processes each key for its own
Which method Free-COM must use is defined at the time of compiling from the
source programme to the executable programme.
If the echo state had been enabled, then the human operator receives a PROMPT
at the command line. If the echo state had been disabled, then no visible or
audible prompt is given to indicate to the human operator a request for
activity, but commands entered at the command line will work anyway.
In any case (standard or enhanced input, with or without echo), the ENTER key
always terminates the editing of the command line, and lets Free-COM start
its interpretation of the line so far entered.
The standard input does not support full command line history, but in some
circumstances it will retrieve the last command line, by pressing the F3 key.
The standard input does not offer completion of names either. Below are shown
the functions of keys in the standard input of Free-COM.
Standard input of Free-COM
Key
|
Function
F1
|
Get next character from last line, if available
Cursor right
|
Get next character from last line, if available
F3
|
Get last line, if available
F5
|
Put current line in last-line buffer, then restart editing a blank line
F6 or Ctrl+Z
|
Insert pseudo-character EOF, End-Of-File, to end a document
Back space
|
Erase the character at the left of the cursor
Cursor left
|
Erase the character at the left of the cursor
| | | | | | | |
The enhanced input supports full command line history and completion of names.
Below are shown the functions of keys in the enhanced input of Free-COM. In
the first table the keys with identical function in the standard as well as
in the enhanced input, in the second table the keys with different functions
from the standard to the enhanced input, and in the third table the keys that
only work in the enhanced input.
Enhanced input of Free-COM
Keys with identical function in the standard as well as in the enhanced input
Key
|
Function
F1
|
Get next character from last line, if available
F3
|
Get last line, if available
F5
|
Put current line in last-line buffer, then restart editing a blank line
Ctrl+Z
|
Insert pseudo-character EOF, End-Of-File, to end a document
Back space
|
Erase the character at the left of the cursor
| | | | | |
Enhanced input of Free-COM
Keys with different functions from the standard to the enhanced input
Key
|
Function
Cursor right
|
Move the cursor one place to the right
Once reaching the end of the line, then get
next character from last line, if available
Cursor left
|
Move the cursor one place to the left
| | |
Enhanced input of Free-COM
Keys that only work in the enhanced input
Key
|
Function
Cursor up
|
Replace current input line with next line from history buffer
Cursor down
|
Replace current input line with previous line from history buffer
Home
|
Move the cursor to the start of the line
End
|
Move the cursor to the end of the line
Delete
|
Erase the character at which the cursor is located
Esc
|
Erase all the current line
Insert
|
Switch between insert mode and overwrite mode
Tab
|
Try to complete the current word as name of an existing data set
Ctrl+C
|
Erase all the current line, and enable the echo state for
informing the operator that he is at the Free-COM command
line, and not stuck inside a non-interruptible programme
| | | | | | | | | |
Command Line Usage: Switches, Options
Command line:
COMMAND.COM [ [D:] path [ console/device: ] ] [{ options }]
[ '/' ( K | C ) «commandline» ]
Starts a new instance of Free-COM command interpreter. Parametres:
D:path
The volume and path where Free-COM must look for its own transient portion
when it re-takes control of the operating system, after the exit of another
programme. Free-COM releases a portion of itself in order to free memory for
other programmes. Up to 620 Kilobytes of low conventional memory can thus be
made available to them, which is very welcome by old programmes that run in
real mode and cannot use extended or expanded memory. Some may use the INT
15h hardware interrupt. Since MS-DOS 3.x the 'd:path' parametre is only
normally needed for setting the COMSPEC environment variable. Free-DOS
implements that functionality as well.
If present, the first non-option argument 'path' specifies the location in
which Free-COM resides. This location is later stored into the COMSPEC
environment variable. In Free-DOS, as well as in MS-DOS version 3.x or later,
the option is not necessary to find the shell invoked during the boot-strap
process, but it may be used to let the system boot-strap a primary shell from
one location, and later use a shell of the same version from another location.
It is not advisable to create before this point a RAM volume by means of an
executable programme, because Free-COM needs to load certain informations
somewhat early during boot-strap, before the execution of FDAUTOEX.BAT or
equivalent start batch process, which is when normally Free-COM is copied
into the RAM volume. A driver such as SRDEMS.SYS, SRDEMS3.SYS or SRDXMS.SYS
can be loaded before Free-COM, because the corresponding executable of those
drivers is SRDISK.EXE, which is loaded later, from FDAUTOEX.BAT or equivalent.
For convenience, Free-COM checks if at the indicated location there really
exist a copy of Free-COM, and makes sure that the copy be accessible. If
non-existing or non-accessible, then that location is ignored. The standard
requires to specify only a relative path, but Free-COM also accepts an
absolute path. Moreover, it accepts as valid a name of the command interpreter
different from COMMAND.COM, which means that another programme called
COMMAND.COM may exist by that name in the same directory. Therefore, Free-COM
is not necessarily named COMMAND.COM
If present, the second non-option argument 'console' specifies the console
that Free-COM shall enable. This setting is system-wide and it is not limited
to Free-COM or just to this particular process tree. In its result, the
argument is identical to the CTTY command.
console/device:
An alternate device for all Input or Output operations, if other than the
default console.
Free-COM knows the following options:
/?
Issues a help screen, then exists.
/!
Enables or disables debugging support, if it had been compiled into Free-COM.
/Y
Enables trace mode or single step mode. The mode is deactivated when the
command line prompt have been reached.
/D
Disables parsing of FDAUTOEX.BAT or equivalent, which then will not be read
even if the /P option be present. This switch is usually set by the kernel,
when the F5 key have been pressed at the boot-strap menu, if any, or during a
boot-strap without menu.
/F
Enables autofail of Critical Errors, which means that all Critical Errors
will be automatically answered with 'Fail', instead of asking the human
operator what to do by showing him the dialogue message:
Abort / Retry / Ignore / Fail
It may not be advisable to enable autofail. Some programmes may behave
unpredictably if giving to them 'Fail' as a response. It may be better to see
the dialogue message and decide what to do for each particular case. Autofail
can be used in well known situations that do not normally require personal
intervention, but not when experimenting unknown software.
/P
Loads a primary copy of Free-COM as permanent. With the /P switch, Free-COM
cannot be exited by the EXIT command.
/P makes the command interpreter permanent, so that the EXIT command will not
exit from it. It can be used in the primary shell for specifying the name of
the start batch process, if other than AUTOEXEC.BAT, or it can be used in
secondary shells for making them permanent during the current working session.
Also with the /P switch, Free-COM executes FDAUTOEX.BAT or equivalent start
batch process before executing any other command. The /P switch may have an
argument to specify an alternate name for the start batch process, if being
other name than AUTOEXEC.BAT
For example, naming the start batch process as FDAUTOEX.BAT can be done by
either of the commands below. Using colon ':' or equal '=' as separator
between the switch and its value, makes no difference:
COMMAND.COM /P:FDAUTOEX.BAT
COMMAND.COM /P=FDAUTOEX.BAT
/E:nnnnn
The environment size in bytes, in the range from 160 to 32768 bytes (160
bytes to 32 Kilobytes). This number will be rounded up the nearest 16 bytes.
The default is 256 bytes.
/E sets another size of the environment segment, in which all the environment
variables are stored. This option has no effect at present, because no part
of Free-COM is loaded into the High Memory Area. It all goes into the low
conventional memory area. Therefore the SHELLHIGH instruction in FDCONFIG.SYS
or equivalent start configuration, is currently executed in equal manner as
the SHELL instruction.
/MSG
Installs the message server. It is extremely rare to use the message server
nowadays, therefore this option forces to load permanently into Random Access
Memory any error messages coming from Free-COM that might exist in storage
volume. This allows for faster access to error messages, but it also occupies
memory, therefore it may not be advisable for computers with very limited
memory capability, which may not afford to use that memory for storing the
messages.
/SWAP
Toggles between defaulting to swap or not to swap. Due to different default
values of this internal flag, it is recommended to prefix always the option
with the plus sign '+' to enable swapping, or else with the minus sign '-'
to disable swapping.
/C {string}
Executes the command in {string}, then exits.
/K {string}
Executes the command in {string}, then exits.
The /C or /K switches are special cases, they do not behave as other options
do. The 'string' of characters at the right side of /C or of /K, except for
an optional argument sign, specifies a command to execute.
Boolean options, which can only be enabled or else disabled, may be prefixed
by the plus sign '+' to enable the option, or else by the minus sign '-' to
disable it.
For example, using the /C switch for executing the DIR command:
/C DIR /S
/C=DIR /S
/CDIR /S
Any of the above three lines behaves in exactly equal manner, it executes the
DIR command with the /S switch (lists directory and all its sub-directories).
If the /C or /K switches be used in conjunction with the /P switch, then
FDAUTOEX.BAT or equivalent start batch process is executed prior to executing
the specified command.
Difference between the /C and /K switches:
The /C option does not enter the interactive command line (the shell prompt)
after having executed the specified command, unless the /P option be also
present. The /K option enters the interactive command line anyway, without
need of specifying the /P option.
Environment Variables
Environment variables can be freely assigned using the SET command. For
instance, executing:
SET var1=tecxsgk;jsdgsdflfsjdflkasjf/lasjflas
Assigns that non-sense to the variable called 'var1'
At a later time, the value of that variable can be used by writing:
%var1%
Thus, by writing the name of the variable enclosed without spaces by two
percent signs, the stored string of characters is returned:
tecxsgk;jsdgsdflfsjdflkasjf/lasjflas
WARNING: Environment variables are fully expanded into plain text before the
command line be parsed further. If a variable contain an odd number of speech
quotes, then the remaining command line must contain the closing speech quote
in order to operate properly. Also see this:
SET var=text del
IF text==%var% GOTO label:
The second line looks uninteresting, but once that the environment variable
called 'var' have been expanded, then the line has morphed into:
IF text==text del GOTO label:
Not that funny anymore, because the IF command interprets only the string
'text==text' as a condition, but 'del GOTO label:' is executed as a command.
Something important may be erased as the result of that command.
For its own purposes, Free-COM uses some environment variables. They are
changed using the SET command, from the command line or from a batch process.
Certain variables can also be changed using some other command, as it will be
explained below when applicable.
COMSPEC Command Specification
Free-COM loads some information on demand, and stores it in the Free-COM
executable. The value of the COMSPEC environment variable contains the name
of the external data set that Free-COM shall use.
DIRCMD Directory Command
The human operator may define his default preferences for the DIR command.
Any preferences specified within DIRCMD will prefix any preferences entered
from the command line or from a batch process. Therefore, by typing:
DIR [arguments]
Free-COM will behave as if the operator had typed:
DIR %DIRCMD% [arguments]
COPYCMD Copy Command
It contains default preferences for the COPY command. The above explanation
for DIRCMD is valid for COPYCMD as well.
PROMPT Command Line Prompt
Free-COM prompts the operator to enter commands at the command line. Free-COM
will parse them for interpretation, and if being valid commands for Free-COM,
then it will execute them, either by calling internal algorithms in the case
of recognising one of the internal commands of Free-COM, or by calling an
external executable programme of that name in the case of not recognising the
received command as an internal one. The prompt can be customised to personal
preferences by changing the content of the PROMPT variable.
Besides the SET command, the variable can also be changed using the PROMPT
command. The document of the PROMPT command gives a detailed description of
the format of the prompt string.
PATH Path to find external executables
When Free-COM be commanded to execute an external command, and if no path to
that external command be given, then Free-COM searches for the command in a
number of paths. The paths are enumerated by the PATH environment variable,
separating them by a semicolon ';' without spaces at either side.
Without a PATH environment variable, or with that variable empty (blank),
then Free-COM will only search the current directory of the current volume.
Besides the SET command, the variable can also be changed using the PATH
command. The document of the PATH command gives a detailed description of the
format of the search path.
There are a number of automatic variables that do not follow the above
mentioned syntax. The content of those variables is generated automatically.
Unlike normal variables, automatic variables are constructed of exactly two
characters, the first one is a single percent sign '%' and the second one is
the variable identifier:
%?
Expands to the current error level, which is the exit code of the previously
executed external command.
%0
Used only in batch processes. It is the name of the process being currently
executed.
%1 to %9
Used only in batch processes. They represent from the first to the ninth
argument passed to the batch process being currently executed. If less than
nine arguments had been passed to the process, then the rest will return an
empty string.
There is not such a thing as '%10', but ten or more arguments can be passed
by shifting values. The process of shifting values first assigns an initial
value to %1, another to %2, and so on up to %9, then it returns to %1 and
assigns a new value to it, another new value to %2, and so on up to %9 with
another new value, then it will repeat the process ad nauseam, indefinitely,
up to the last received instruction or to the memory limit of the computer.
For using the tenth or further arguments refer to the SHIFT command.
FOR %v IN (...) DO [command [switches]] %v
The variable represented as '%v' in the above line may use any letter. The
percent sign must be written before the letter that names the variable. The
FOR command creates a new variable, which is valid in the [command [switches]]
following the DO keyword.
The FOR command is not supposed to be changed using the SET command.
Example to find the string 'Dixie' in any data set located in the current
directory of the current volume:
FOR %a IN (*.*) DO FIND "Dixie" %a
The upper or lower cases used above for the commands FOR, IN, DO and FIND are
merely illustrative, the line is not case sensitive. However, the FIND
programme will search for the string 'Dixie' with case sensitivity. It will
not find any strings such as 'dixie' or 'DIXIE', or any combination of upper
and lower case.
The /I switch can be given to the FIND programme, telling it to ignore case
during the search, thus finding a string without regard to upper or lower
case:
FOR %a IN (*.*) DO FIND /I "Dixie" %a
The procedure may be combined in uncountable ways. For example, to show also
the number of the line where each instance of the string 'Dixie' be found,
then to append all results to a document called DIXIE.TXT located in the
current directory of the current volume:
FOR %a IN (*.*) DO FIND /I /N "Dixie" %a >> DIXIE.TXT
The redirection must be done by the appending process, which uses two
'greater than' symbols >>
Only one 'greater than' symbol cannot be used, because then the FIND programme
would overwrite DIXIE.TXT at every passing, and as a result DIXIE.TXT would
show that only one line has been found by the FIND programme.
%%
Two percent signs do not make a variable, they just expand to a single percent
sign. Therefore for getting a single percent sign '%' the construction '%%'
can be used.
Automatic variables have one percent sign only, which may lead to confusion
within the FOR command. For instance, in:
SET aryan=noble
FOR %a IN (*.*) DO ECHO %aryan% %a
%aryan is interpreted as [%a]ryan
There will be no echo of the string 'noble' on screen, as it had been intended
erroneously, because the '%a' in '%aryan' is understood as the final '%a' that
closes the FOR command, and the intended final '%a' that after '%aryan%' ends
the line, is simply disregarded.
EBNF, Extended Backus-Naur Formula
EBNF, Extended Backus-Naur Formula, is a convention used to facilitate the
reading and understanding of synopses of commands. EBNF affects the character
setting of the text in four types, depending on different meanings: italic
characters, terminal-type characters, characters quoted inside single speech
marks, and bold characters. If not having some of those character types
available (for example in plain text), then the nearest approximation should
be used. EBNF also specifies operator symbols. The two sets of conventions
are explained below.
Extended Backus-Naur Formula for synopses of commands
Type of the character setting
EBNF
|
Name
|
Meaning
|
Example
Non-terminal symbols
|
italic
|
Place holders for arguments, which are explained in the description
|
varname
Terminal symbols
|
terminal
|
Characters to be entered at the command line or displayed by the computer
|
ECHO
Terminal symbols
|
'string'
|
The speech quotes remove the metafunction of the enclosed characters, in
order to specify EBNF operators as terminal symbols
|
Pipe '|'
Operators
|
bold
|
Operators that construct portions together
|
Pipe |
| | | | |
Extended Backus-Naur Formula for synopses of commands
Operator symbols
Symbol
|
Name of symbol and its meaning
|
|
Pipe, vertical bar. Use alternatively either the left or the right token, but
not both
( )
|
Parentheses. They enclose tokens, limiting the range of the pipe | mentioned
above
[ ]
|
Square brackets. They enclose optional tokens, thus they may appear one time
or not appear. They also limit the range of the pipe | above
{ }
|
Curly brackets. They enclose repetitive tokens, which may appear one or more
times. They also limit the range of the pipe | above
{ : }
|
Colon surrounded by curly brackets. As the normal curly brackets, but any
repetitive tokens are delimited by the token or tokens at the right of the
colon. For instance:
|
{ record : '+' }
Is equivalent to:
record [{ '+' record }]
And applies to:
record
record + record
record + record + record
record + record + record + record
... ad nauseam
<< >>
« »
|
Lesser and greater. Quotation. Either of these sets of symbols represents a
place holder for an arbitary string of terminal symbols, whose further syntax
is described by the enclosed text in English.
::=
|
Double colon and equal sign. It assigns a meaning (right side) to a
non-terminal symbol (left side). For instance:
| | | | | | | | |