NFS - Rewrite the RTT code and the request flags & low level state machine
[dragonfly.git] / usr.bin / doscmd / doscmd.1
blob5776bf654d0b7730e7e8560ad93302afed5df3f9
1 .\"
2 .\" Copyright (c) 1992, 1993, 1996
3 .\"     Berkeley Software Design, Inc.  All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\"    notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\"    notice, this list of conditions and the following disclaimer in the
12 .\"    documentation and/or other materials provided with the distribution.
13 .\" 3. All advertising materials mentioning features or use of this software
14 .\"    must display the following acknowledgement:
15 .\"     This product includes software developed by Berkeley Software
16 .\"     Design, Inc.
17 .\"
18 .\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
19 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 .\" ARE DISCLAIMED.  IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
22 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 .\" SUCH DAMAGE.
29 .\"
30 .\"     BSDI doscmd.1,v 2.3 1996/04/08 19:32:29 bostic Exp
31 .\" $FreeBSD: src/usr.bin/doscmd/doscmd.1,v 1.12.2.11 2002/06/20 23:45:41 charnier Exp $
32 .\" $DragonFly: src/usr.bin/doscmd/doscmd.1,v 1.7 2008/04/29 09:33:41 swildner Exp $
33 .\"
34 .Dd January 30, 1995
35 .Dt DOSCMD 1
36 .Os
37 .Sh NAME
38 .Nm doscmd
39 .Nd run a subset of real-mode DOS programs
40 .Sh SYNOPSIS
41 .Nm
42 .Fl 23AbDEfGHIMOPRrtVvXxYz
43 .Fl c Ar file
44 .Fl d Ar file
45 .Fl i Ar port Ns Xo
46 .Op : Ns Ar cnt
47 .Xc
48 .Fl o Ar port Ns Xo
49 .Op : Ns Ar cnt
50 .Xc
51 .Fl S Ar int
52 .Fl U Ar int
53 .Op Ar cmd Op Ar args ...
54 .Sh DESCRIPTION
55 The
56 .Nm
57 utility can either emulate a subset of DOS and run the
58 single command
59 .Ar cmd
60 .Ar args ,
61 or it can be used to emulate a PC and boot DOS,
62 which allows it to run a larger variety of DOS applications.
63 It should be noted that MS-DOS 6.2 and higher appear
64 to cause difficulties for
65 .Nm .
66 To boot DOS, either provide the
67 .Fl b
68 flag or omit the
69 .Ar cmd
70 argument.
72 .Fl b
73 is specified,
74 .Ar cmd
75 and
76 .Ar args
77 are ignored.
78 .Pp
79 Although
80 .Nm
81 only provides a subset of DOS, it is sufficient to run a variety of
82 programs, including, but not limited to, compilers, assemblers and
83 linker-loaders.
84 .Pp
85 The various flags available to
86 .Nm
87 are:
88 .Bl -tag -width indent
89 .It Fl 2
90 Enable debugging traces of every trap to the
91 .Nm
92 emulator from the DOS program.
93 Note that some traps are handled in the kernel and hence will not
94 be traced.
95 .It Fl 3
96 Enable debugging of several lower level functions, such
97 as changing of interrupt vectors and initializing paths to logical drives.
98 .\"
99 .\"
101 .It Fl A
102 Enable tracing of all interrupts that pass into the emulator.
103 This is the same as using the
104 .Fl S
105 option with all 256 possible interrupt values.
109 .It Fl b
110 Attempt to boot DOS rather than emulate it.
114 .It Fl c Ar file
115 Capture all output directed at the screen into
116 .Ar file .
117 Note that direct screen writes will not be captured.
121 .It Fl C
122 List MS-DOS calls emulated and their return values.
126 .It Fl D
127 Enable debugging of the disk and file operations.
131 .It Fl d Ar file
132 Send the debug output to
133 .Ar file
134 instead of stderr.
138 .It Fl E
139 Enable debugging of the exec routines.
143 .It Fl G
144 Enable debugging of the video (graphics) routines.
148 .It Fl H
149 Enable tracing of half implemented calls.
153 .It Fl I
154 Enable tracing of all interrupts.  Almost the same as
155 .Fl A
156 except a few less traces are turned on.
160 .It Fl i Ar port Ns Xo
161 .Op : Ns Ar cnt
163 Enable tracing of all inputs requested from the io
164 .Ar port .
166 .Ar cnt
167 is present, trace from
168 .Ar port
170 .Ar port+cnt Ns No -1 .
174 .It Fl M
175 Enable debugging of the memory operations.
179 .It Fl O
180 Direct the debugging output to stdout rather than stderr.
184 .It Fl o Ar port Ns Xo
185 .Op : Ns Ar cnt
187 Enable tracing of all outputs requested from the io
188 .Ar port .
190 .Ar cnt
191 is present, trace from
192 .Ar port
194 .Ar port+cnt Ns No -1 .
198 .It Fl p Ar port Ns Xo
199 .Op : Ns Ar cnt
201 Map the requested io
202 .Ar port
203 (with optional range up to to
204 .Ar port+cnt Ns No -1 )
205 to the real hardware I/O port(s).
206 This will likely require root privs to access them.
210 .It Fl P
211 Enable tracing of io port calls (such as
212 .Li inb ,
213 .Li outb ,
214 etc).
218 .It Fl R
219 Enable debugging of the file redirect code.
223 .It Fl r
224 Use the raw keyboard and display.  Pressing <CTRL-ALT-DEL> will
225 cause doscmd to exit.  This allows use of VGA graphics.
229 .It Fl S Ar int
230 Enable tracing of the interrupt
231 .Ar int .
235 .It Fl t
236 Attempt to do instruction level tracing.
237 Some instructions confuse the trace.
238 Pressing
239 .Li <CTRL-ALT-T>
240 attempts to toggle the trace mode on and off.
244 .It Fl U Ar int
245 Disable tracing of the interrupt
246 .Ar int .
247 Useful after
248 .Fl A
250 .Fl I .
254 .It Fl V
255 Include register dumps when reporting unknown interrupts.
259 .It Fl v
260 Same as
261 .Fl AH
265 .It Fl X
266 Enable debugging of the XMS operations.
270 .It Fl x
271 Open an X11 window to display output.  This enables a
272 variety interrupts not available otherwise.  This
273 can be used with or without
274 .Fl b .
278 .It Fl Y
279 Enable debugging of the EMS operations.
283 .It Fl z
284 Cause
286 to pause just prior to jumping to the DOS program.
287 Very little use except for developing
288 .Nm .
291 When starting up,
293 attempts to read a configuration file.  First the file
294 .Cm .doscmdrc
295 in the current directory.  If not found there, the
296 .Cm $HOME
297 directory is searched.  If still not found, the file
298 .Cm /etc/doscmdrc
299 is used.
301 In the configuration file, a comment is started with the \fB#\fP character.
302 Blank lines are ignored.
303 Non empty lines either are environment variables
304 or commands which configure devices.
305 Any line which has an \fB=\fP before any white space is considered to be
306 an environment variable assignment and is added to the DOS environment.
307 The rest of the lines are one of the following
308 .Bl -tag -width XXXXX
312 .It Cm boot Op Cm A: | C:
313 Set the device to boot from.
314 By default
315 .Cm A:
316 is first tried, if it is defined, and if that fails,
317 .Cm C:
318 is tried.
322 .It Cm assign Xo
323 .Op Cm A-Z :
324 .Op Fl ro
325 .Ar path
327 Assigns the
328 .Bsx
329 directory
330 .Ar path
331 to be assigned as the specified drive.  If the
332 .Fl ro
333 flag is specified, it is a read only file system.
334 These assignments will not take place when booting DOS until the
335 .Pa /usr/libdata/doscmd/redir.com
336 binary is run.
340 .It Cm assign Xo
341 .Cm lpt Ns Op Cm 0-4 :
342 .Op Cm direct
343 .Ar path
344 .Op Ar timeout
346 Attempt to assign the specified printer to
347 .Ar path .
349 .Ar timeout
350 is specified then use it as the length of time for no
351 activity (in seconds) to indicate that the printer
352 should be flushed.  The default is 30 seconds.
354 .Cm direct
355 option should be set when
356 .Ar path
357 refers to a real printer.
361 .It Cm assign Xo
362 .Op Cm A: | B:
363 .Op Fl ro
364 .Ar path
365 .Ar density
367 .It Cm assign Xo
368 .Cm flop Ns Op Cm 01
369 .Op Fl ro
370 .Ar path
371 .Ar density
373 Assign the file
374 .Ar path
375 to be used as either the next available floppy or
376 to the specified floppy.
378 .Fl ro
379 is specified the floppy will be read only.
381 .Ar density
382 may be one of:
384 .Bl -tag -compact -width 1440x
385 .It 180
386 9 head 40 track single sided floppy
387 .It 360
388 9 head 40 track double sided floppy
389 .It 720
390 9 head 80 track double sided floppy
391 .It 1200
392 15 head 80 track double sided floppy
393 .It 1440
394 18 head 80 track double sided floppy
395 .It 2880
396 36 head 80 track double sided floppy
401 .It Cm assign Xo
402 .Op Cm C-Z  :
403 .Op Fl ro
404 .Ar path
405 .Op Ar type | cyl head sec
406 .Op Ar fdisk_tab
408 .It Cm assign Xo
409 .Cm hard Ns Op Cm 01
410 .Op Fl ro
411 .Ar path
412 .Op Ar type | cyl head sec
413 .Op Ar fdisk_tab
415 Assign the file
416 .Ar path
417 to be used as either the next available hard disk or
418 to the specified hard disk.
419 A disk's geometry can either be directly specified with
420 .Ar cyl
421 being the number of cylinders,
422 .Ar head
423 the number of heads and
424 .Ar sec
425 the number of sectors per track,
426 or it can be one of the standard types specified by
427 .Ar type
428 (see below).
429 The option
430 .Ar fdisk_tab
431 argument specifies file to use as the first sector
432 of this disk.  This can be useful for inserting a
433 false fdisk table when
434 .Ar path
435 only refers to part of a disk.
439 .It Cm assign Xo
440 .Cm com Ns Op Cm 1-4 :
441 .Ar path
442 .Ar port
443 .Ar irq
445 Assign the tty or pty specified by
446 .Ar path
447 to be used as the specified com port.
448 Its base address will be emulated at
449 .Ar port
450 at interrupt specified by
451 .Ar irq .
452 This code is lightly tested and may not suit all needs.
456 .It Cm portmap Xo
457 .Ar port
458 .Op Ar count
460 Map the requested io
461 .Ar port
462 (with optional range up to to
463 .Ar port+count Ns No -1 )
464 to the real hardware I/O port(s).
465 This will likely require root privs to access them.
469 .It Cm "setver command version"
470 Cause doscmd, when emulating DOS, to report
471 .Cm version
472 as the version number of DOS when called from the program named
473 .Cm command .
474 The format of
475 .Cm version
476 is the same as of the
477 .Cm MS_VERSION
478 variable described below.
481 If not already assigned,
482 .Cm C:
483 will be assigned to the root directory (/) and the current directory
485 .Cm C:
486 will be set to the actual current directory.
487 Note that this means that invocations such as:
489 .Dl "doscmd ../foo
491 will not work as the
492 .Cm C:
493 directory will start with the current path.
494 Also, the following environment variables will be defined if not
495 already defined:
496 .Bd -literal
497 .Cm "COMSPEC=C:\eCOMMAND.COM
498 .Cm "PATH=C:\e
499 .Cm "PROMPT=DOS>
503 .Cm PATH
504 variable is also used to find
505 .Ar cmd .
506 Like DOS, first
507 .Ar cmd.com
508 will be looked for and then
509 .Ar cmd.exe .
510 .Sh "CONFIGURATION VARIABLES"
511 There are several variables in the
512 .Cm .doscmdrc
513 file which are internal to doscmd and do not actually get inserted into
514 the DOS environment.  These are:
515 .Bl -tag -width MS_VERSION
516 .It Cm MS_VERSION
517 The value of this variable is used to determine the version of DOS that
518 should be reported by
519 .Nm .
520 Note that
522 will not change the way
523 it works, just the way it reports.  By default this value is
524 .Cm 410 ,
525 which corresponds to
526 .Tn "MS-DOS"
527 version 4.1.
528 To change it to version 3.2 (the default in previous versions of
529 .Nm )
530 use the value of
531 .Cm 320 .
532 .It Cm X11_FONT
533 The value of this variable determines the font used in an X window.
534 The default font is
535 .Cm vga ,
536 which is installed in
537 .Pa /usr/libdata/doscmd/fonts .
538 Add the line
539 .Ql xset fp+ /usr/libdata/doscmd/fonts
540 to your
541 .Pa ${HOME}/.xsession
543 .Pa ${HOME}/.xinitrc
544 to let the X server find it.
546 .Sh FILE TRANSLATION
549 utility translates
550 .Bsx
551 file names into
552 .Tn DOS
553 file names by converting to all upper case and eliminating any invalid
554 character.  It does not make any attempt to convert ASCII files into
556 .Cm <CR><LF>
557 format favored in the DOS world.  Use
558 .Xr unix2dos 1
559 (part of the
560 .Xr pkgsrc 7
561 collection) or similar tools to convert ASCII files.
563 .Sh DISK TYPES
564 .TS H
565 expand, box;
566 r | r | r | r | r.
567 Type    Cylinders       Heads   Sectors Size
569 01      306     4       17      10MB
570 02      615     4       17      20MB
571 03      615     6       17      30MB
572 04      940     8       17      62MB
573 05      940     6       17      46MB
575 06      615     4       17      20MB
576 07      462     8       17      30MB
577 08      733     5       17      30MB
578 09      900     15      17      112MB
579 10      820     3       17      20MB
581 11      855     5       17      35MB
582 12      855     7       17      49MB
583 13      306     8       17      20MB
584 14      733     7       17      42MB
585 15      976     15      17      121MB
587 16      612     4       17      20MB
588 17      977     5       17      40MB
589 18      977     7       17      56MB
590 19      1024    7       17      59MB
591 20      733     5       17      30MB
593 21      733     7       17      42MB
594 22      733     5       17      30MB
595 23      306     4       17      10MB
596 24      925     7       17      53MB
597 25      925     9       17      69MB
599 26      754     7       17      43MB
600 27      754     11      17      68MB
601 28      699     7       17      40MB
602 29      823     10      17      68MB
603 30      918     7       17      53MB
605 31      1024    11      17      93MB
606 32      1024    15      17      127MB
607 33      1024    5       17      42MB
608 34      612     2       17      10MB
609 35      1024    9       17      76MB
611 36      1024    8       17      68MB
612 37      615     8       17      40MB
613 38      987     3       17      24MB
614 39      987     7       17      57MB
615 40      820     6       17      40MB
617 41      977     5       17      40MB
618 42      981     5       17      40MB
619 43      830     7       17      48MB
620 44      830     10      17      68MB
621 45      917     15      17      114MB
623 46      1224    15      17      152MB
626 .Sh INSTALLING DOS ON A PSEUDO DISK
627 To install DOS on a pseudo hard disk under doscmd, do the following:
628 .Bl -tag -width XXXX
629 .It 1
630 Create a
631 .Pa .doscmdrc
632 with at least the following:
633 .Bd -literal -offset indent
634 assign A: /dev/fd0.1440 1440
635 assign A: /dev/fd0.720 720
636 assign hard boot_drive 80 2 2
639 You may need to adjust the raw files for the A: drive to match
640 your system.  This example will cause the HD drive to be tried
641 first and the DD drive second.
643 Note that you should only use raw devices or files at this point,
644 do not use a cooked device!  (Well, it would probably be okay
645 for a hard disk, but certainly not the floppy)
647 .Li boot_drive
648 should be the file name of where you want your bootable
649 image to be.  The three numbers which follow
650 .Li 80 2 2
651 say that the drive will have 80 cylinders, 2 heads and 2 sectors per track.
652 This is the smallest drive possible which still can have MS-DOS
653 5.0 installed on it along with a
654 .Pa config.sys
656 .Pa autoexec.bat
657 file.
659 You might want to create a larger boot drive.
661 The file
662 .Pa boot_drive
663 must exist, so use the command touch to create it.
664 .It 2
665 Insert a floppy disk into the A: drive which is bootable to MS-DOS
666 and has the commands fdisk, format and sys on it.  You should also
667 copy the file redir.com onto the floppy by either mounting it
668 with the msdos file system type or by using mtools
669 (e.g.,
670 .Dq Li mwrite redir.com a: ) .
671 .It 3
672 run doscmd.
673 .It 4
674 At the > prompt type
675 .Li fdisk .
676 .It 5
677 Select
678 .Li Create DOS partition or Logical Drive .
679 .It 6
680 Select
681 .Li Create Primary DOS Partition .
682 .It 7
683 Tell it how big to make it
684 (Typically the whole drive.  It is pretty tiny after all.)
685 .It 8
686 Get out of FDISK by hitting
687 .Li <ESC>
688 a few times.
689 .It 9
690 doscmd may abort, if it does, start up doscmd again.
691 .It 10
692 At the > prompt, type
693 .Li format c:
694 and follow the instructions.
695 .It 11
696 At the > prompt type
697 .Li sys c: .
698 .It 12
699 Get out of doscmd.
700 .It 13
701 Either remove the floppy from the drive or add the line
702 .Bd -literal -offset indent
703 boot C:
705 to your
706 .Pa .doscmdrc .
707 .It 14
708 You should now be running DOS off of your new disk.  You will
709 probably want both config.sys and an autoexec.bat file.  To
710 start with, you can say:
711 .Bd -literal -offset indent
712 > copy con: config.sys
713 LASTDRIVE=Z
715 > copy con: autoexec.bat
716 @echo off
717 redir.com
720 .It 15
721 Quit doscmd.
722 .It 16
723 You know have a bootable pseudo disk which will automatically call
724 the magic
725 .Li redir
726 program, which installs
728 disks.  To use
729 them add lines to your .doscmdrc such as:
730 .Bd -literal -offset indent
731 assign D: /usr/dos
732 assign P: -ro /usr/prb
734 Note that you will not always be able to access every file due to
735 naming problems.
737 .Sh DIAGNOSTICS
740 encounters an interrupt which is unimplemented, it will print a message
741 such as:
743 .Dl Unknown interrupt 21 function 99
745 and exit.
749 emits the message
750 .Ic X11 support not compiled in
751 when supplied the
752 .Fl x
753 switch, this support can be added by defining an environment variable
754 .Ev X11BASE
755 which points to the installed X Window System (normally
756 .Pa /usr/X11R6 )
757 and then typing
758 .Ic make install
759 in the source directory (normally
760 .Pa /usr/src/usr.bin/doscmd ) .
761 For this to work, the X programmer's kit must have been installed.
762 .Sh HISTORY
765 program first appeared in
766 .Tn BSD/386 .
767 .Sh AUTHORS
768 .An Pace Willisson ,
769 .An Paul Borman