DOSCMD(1)

명칭
doscmd - 리얼모드 DOS 프로그램의 부분집합을 실행한다

서식
doscmd -23AbDEfGHIMOPRrtVvXxYz -c file -d file -i port [:cnt] -o port [:cnt] -S int -U int [cmd [args ...]]

해설
doscmd 유틸리티는, DOS 의 부분집합을 에뮤레이트 해 단일 명령 cmd args (을)를 실행할 수가 있고, PC 를 에뮤레이트 해 DOS 를 부트 할 수도 있습니다. DOS 를 부트 하는 경우에는, 보다 다양한 DOS 어플리케이션을 실행할 수가 있습니다. MS-DOS 6.2 이후는 doscmd 그럼 잘 취급할 수 없는 것 같습니다. DOS 를 부트 하려면 , -b 플래그를 지정하는지, cmd 인수를 생략 해 주세요. -b (을)를 지정하면(자), cmd (와)과 args (은)는 무시됩니다.

doscmd (은)는 DOS 의 부분집합을 제공할 뿐입니다만, 많은 프로그램을 실행하기에는 충분합니다. 컴파일러, 어셈블러, 링커 로더라고 하는 프로그램도 실행할 수 있습니다만, 이것들로 한정하는 것이 아닙니다.

다음에 나타내는 다양한 플래그를 doscmd (으)로 지정 가능합니다:

-2  DOS 프로그램으로부터의 doscmd 에뮬레이터에의 모든 트랩의 디버그 트레이스를 유효하게 합니다. 커널에 의해 다루어지기 위해서(때문에) 트레이스 되지 않는 트랩이 있는 것에 주의해 주세요.

-3  인터럽트 벡터 테이블의 변경이나 논리 드라이브에의 패스의 초기화라고 한, 몇개의 하위 레벨 기능의 디버그를 유효하게 합니다.

-A  에뮬레이터를 통과하는 모든 세치기의 트레이스를 유효하게 합니다. -S 옵션을, 255 개 모든 세치기의 값과 함께 지정하는 경우와 같습니다.

-b  DOS 를 에뮤레이트 하는 대신에 DOS 를 부트 합니다.

-c file
    화면에의 모든 출력을 잡아, file 에 출력합니다. 화면의 직접적인 기입은 잡을 수 없는 것에 주의해 주세요.

-C  MS-DOS 의 호출 에뮬레이션과 반환값을 리스트 합니다.

-D  디스크와 파일의 조작에 관한 디버그를 유효하게 합니다.

-d file
    디버그 출력을, 표준 에러 출력대신에 file 에 보냅니다.

-E  exec routine의 디버그를 유효하게 합니다.

-G  비디오 (그래픽스) routine의 디버그를 유효하게 합니다.

-H  어중간하게 실장된 호출의 트레이스를 유효하게 합니다.

-I  모든 세치기의 트레이스를 유효하게 합니다. -A (와)과 거의 같습니다만, 유효하게 되는 트레이스는 약간 적습니다.

-i port
    [:cnt] 입출력 포트 port (으)로부터의 모든 입력 요구의 트레이스를 유효하게 합니다. 만약 cnt 하지만 주어지면(자), port (으)로부터 port+cnt-1 까지를 트레이스 합니다.

-M  메모리 조작의 디버그를 유효하게 합니다.

-O  디버그 출력을, 표준 에러 출력대신에, 표준 출력에 출력합니다.

-o port
    [:cnt] 입출력 포트 port (으)로부터의 모든 출력 요구의 트레이스를 유효하게 합니다. 만약 cnt 하지만 주어지면(자), port (으)로부터 port+cnt-1 까지를 트레이스 합니다.

-p port
    [:cnt] 요구된 I/O port (옵션으로서 port+cnt-1 까지의 범위를 지정 가능합니다)를 실기 하드웨어 I/O 포트에 MAP 합니다. 액세스에는 root 권한이 필요하겠지요.

-P  입출력 포트 호출 (예를 들면 inb, outb 등)의 트레이스를 유효하게 합니다.

-R  파일 리디렉트 코드의 디버그를 유효하게 합니다.

-r  생의 키보드 입력과 표시를 사용합니다. <CTRL-ALT-DEL> (을)를 누르면(자), doscmd 는 종료합니다. VGA 그래픽스를 사용할 수 있게 됩니다.

-S int
    세치기 int 의 트레이스를 유효하게 합니다.

-t  인스트럭션 레벨의 트레이스를 시도합니다. 트레이스를 혼란시키는 인스트럭션이 있습니다. <CTRL-ALT-T> (을)를 누르면(자) 트레이스 모드의 유효와 무효를 바꿉니다.

-U int
    세치기 int 의 트레이스를 무효로 합니다. -A (이)나 -I 의 다음에 사용하면(자) 편리합니다.

-V  미지의 세치기를 보고할 때, 레지스터 덤프도 포함합니다.

-v  -AH (와)과 같습니다.

-X  XMS 조작의 디버그를 유효하게 합니다.

-x  X11 의 윈도우를 표시 출력을 위해서(때문에) 오픈합니다. 다른 방법에서는 이용할 수 없는 여러가지 세치기를 유효하게 합니다. -b (을)를 지정해도, 지정하지 않아도, 사용 가능합니다.

-Y  EMS 조작의 디버그를 유효하게 합니다.

-z  DOS 프로그램에 점프 하기 직전에 doscmd (을)를 정지시킵니다. doscmd (을)를 개발하는 이외의 용도는 거의 없습니다.

기동시에, doscmd (은)는 배치 파일을 읽으려고 합니다. 우선, 커런트 디렉토리의 파일 .doscmdrc (을)를 시험합니다. 만약 발견되지 않는 경우, $HOME (을)를 검색합니다. 그런데도 더 발견되지 않는 경우, 파일 /etc/doscmdrc (을)를 사용합니다.

배치 파일에서는, 코멘트는 # 캐릭터로부터 개시합니다. 또, 공행은 무시됩니다. 비공행은, 환경 변수 또는 디바이스를 설정하는 명령입니다. 공백의 앞에 = 가 있는 행은, 환경 변수에의 대입이라고 다루어져 DOS 의 환경에 추가됩니다. 그 외의 행은 다음의 머지않아인가입니다.

boot [A: | C:]
    부트 하는 디바이스를 설정합니다. 디폴트에서는, A: 하지만 정의되고 있으면 최초로 시험 받아 만약 그것이 실패하면(자), C: 하지만 시험 받습니다.

assign
    [A-Z]: [-ro] path BSD/OS 의 디렉토리 path (을)를, 지정한 드라이브에 할당합니다. -ro 플래그를 지정하면(자), 독해 전용 파일 시스템이 됩니다. DOS 부트시에는, /usr/libdata/doscmd/redir.com 바이너리가 실행될 때까지는, 이러한 할당은 실행되지 않습니다.

assign
    lpt[0-4]: [direct] path [timeout] 지정한 프린터를 path 에 할당하려고 합니다. timeout 하지만 지정되었을 경우, 그 기간 (초수) 활동이 없는 경우에, 프린터를 플래시 해야 할것을 나타냅니다. 디폴트는 30 초입니다. path 하지만 진짜의 프린터를 참조하고 있는 경우에는, direct 옵션을 지정해 주세요.

assign
    [A: | B:] [-ro] path density

assign
    flop[01] [-ro] path density 파일 path (을)를, 다음에 이용 가능한 플로피 또는 지정한 플로피에 할당합니다. -ro 하지만 지정되면(자), 플로피는 읽어내 전용이 됩니다. density (은)는 다음의 머지않아인가입니다:

    180 9 헤드 40 트럭 한 면 플로피
    360 9 헤드 40 트럭 양면 플로피
    720 9 헤드 80 트럭 양면 플로피
    1200
        15 헤드 80 트럭 양면 플로피
    1440
        18 헤드 80 트럭 양면 플로피
    2880
        36 헤드 80 트럭 양면 플로피

assign
    [C-Z]: [-ro] path [type | cyl head sec] [fdisk_tab]

assign
    hard[01] [-ro] path [type | cyl head sec] [fdisk_tab] 파일 path (을)를, 다음에 이용 가능한 하드 디스크 또는 지정한 하드 디스크에 할당합니다. 디스크의 지오메트리는, 실린더수 cyl (와)과 헤드수 head (와)과 트럭 근처의 섹터수 sec 그리고 직접 지정할 수도 있고, 표준 타입으로부터 1 개를 type (후술)(으)로 지정할 수도 있습니다. 옵션의 fdisk_tab 인수는, 이 디스크의 최초의 섹터로서 사용하는 파일을 지정합니다. path 하지만 디스크의 일부만을 참조하는 경우에, 가짜의 fdisk 테이블을 삽입하기 위해서 사용할 수 있습니다.

assign
    com[1-4]: path port irq path 그리고 지정한 tty 또는 pty 를, 지정한 com 포트로서 사용하도록(듯이) 할당합니다. 베이스 주소는 port 그리고 에뮤레이트 되어 세치기는 irq 그리고 지정됩니다. 이 코드는 가볍게 테스트했을 뿐이므로, 향하지 않는 용도가 있을지도 모릅니다.

setver command version
    doscmd 가 DOS 를 에뮤레이트 하는 경우, command (이)라는 이름의 프로그램으로부터 불렸을 때에, DOS 버젼으로서 version (을)를 보고하도록(듯이) 합니다. version 의 포맷은, 후술의 MS_VERSION 변수와 같습니다.

C: (은)는, 아직 할당할 수 있지 않은 경우에는, 루트 디렉토리 (/)에 할당할 수 있어 C: 의 커런트 디렉토리는, 현재의 커런트 디렉토리로 설정됩니다. 이것은 즉,

    doscmd ../foo

(와)과 같이 기동해도, 동작하지 않는 것을 의미하는 것에 주의해 주세요. 왜냐하면 C: 디렉토리는 경향 패스로 개시하기 때문입니다. 또, 다음의 환경 변수도, 미설정의 경우에는 설정됩니다:

    COMSPEC=C:\COMMAND.COM
    PATH=C:\
    PROMPT=DOS>

PATH 변수는 cmd (을)를 검색할 때에도 사용됩니다. DOS 와 같이, 우선 cmd.com 하지만 검색되어 그리고 cmd.exe 하지만 검색됩니다.

배치 변수
doscmd 의 내부 변수이며, 실제의 DOS 의 환경에서는 설정되지 않는 변수가, .doscmdrc 파일중에 몇개인가 있습니다. 그것들을 이하에 나타냅니다:

MS_VERSION
    이 변수의 값은, doscmd 하지만 보고를 행하는 DOS 의 버젼을 결정하기 위해서(때문에) 사용됩니다. doscmd (은)는, 동작을 바꾸지 않고 , 보고 방법만을 바꾸는 것에 주의해 주세요. 디폴트에서는, 이 값은 410 (이어)여, MS-DOS 버젼 4.1 에 대응합니다. 버젼 3.2 (이전의 doscmd 의 디폴트였습니다)로 변경하려면 , 값 320 (을)를 사용해 주세요.

X11_FONT
    이 변수의 값은 X window 로 사용하는 폰트를 결정합니다. 디폴트의 폰트는 vga (이어)여 /usr/libdata/doscmd/fonts 에 인스톨 되고 있습니다. X 서버를 폰트를 찾아낼 수 있도록(듯이) ‘xset fp+ /usr/libdata/doscmd/fonts’ (을)를 ${HOME}/.xsession 인가 ${HOME}/.xinitrc 에 추가해 주세요.

파일 변환
doscmd 유틸리티는 BSD/OS 의 파일명을 DOS 의 파일명으로 변환할 때, 모두 대문자로 변환해, 무효인 캐릭터를 제거합니다. ASCII 파일을, DOS 의 세계에서 선호된다 <CR><LF> 형식에 변환한다고 하는 것은 없습니다. ASCII 파일을 변환하려면 , 프로그램 fconv(1) (ports 콜렉션의 일부입니다)인가, 이것에 비슷하는 툴 (을)를 사용해 주세요.

디스크 타입
타입 실린더 헤드 섹터 사이즈
01 | 306 | 4 | 17 | 10MB
02 | 615 | 4 | 17 | 20MB
03 | 615 | 6 | 17 | 30MB
04 | 940 | 8 | 17 | 62MB
05 | 940 | 6 | 17 | 46MB
06 | 615 | 4 | 17 | 20MB
07 | 462 | 8 | 17 | 30MB
08 | 733 | 5 | 17 | 30MB
09 | 900 | 15 | 17 | 112MB
10 | 820 | 3 | 17 | 20MB
11 | 855 | 5 | 17 | 35MB
12 | 855 | 7 | 17 | 49MB
13 | 306 | 8 | 17 | 20MB
14 | 733 | 7 | 17 | 42MB
15 | 976 | 15 | 17 | 121MB
16 | 612 | 4 | 17 | 20MB
17 | 977 | 5 | 17 | 40MB
18 | 977 | 7 | 17 | 56MB
19 | 1024 | 7 | 17 | 59MB
20 | 733 | 5 | 17 | 30MB
21 | 733 | 7 | 17 | 42MB
22 | 733 | 5 | 17 | 30MB
23 | 306 | 4 | 17 | 10MB
24 | 925 | 7 | 17 | 53MB
25 | 925 | 9 | 17 | 69MB
26 | 754 | 7 | 17 | 43MB
27 | 754 | 11 | 17 | 68MB
28 | 699 | 7 | 17 | 40MB
29 | 823 | 10 | 17 | 68MB
30 | 918 | 7 | 17 | 53MB
31 | 1024 | 11 | 17 | 93MB
32 | 1024 | 15 | 17 | 127MB
33 | 1024 | 5 | 17 | 42MB
34 | 612 | 2 | 17 | 10MB
35 | 1024 | 9 | 17 | 76MB
36 | 1024 | 8 | 17 | 68MB
37 | 615 | 8 | 17 | 40MB
38 | 987 | 3 | 17 | 24MB
39 | 987 | 7 | 17 | 57MB
40 | 820 | 6 | 17 | 40MB
41 | 977 | 5 | 17 | 40MB
42 | 981 | 5 | 17 | 40MB
43 | 830 | 7 | 17 | 48MB
44 | 830 | 10 | 17 | 68MB
45 | 917 | 15 | 17 | 114MB
46 | 1224 | 15 | 17 | 152MB

의사 디스크에의 DOS 의 인스톨
doscmd 의 의사 하드 디스크에 DOS 를 인스톨 하려면 , 다음과 같이 합니다:

1   적어도 다음의 기술을 포함한다 .doscmdrc (을)를 작성합니다:

        assign A: /dev/fd0. 1440 1440
        assign A: /dev/fd0. 720 720
        assign hard boot_drive 80 2 2

    A: 드라이브에 대응하는 로우파일 (역주: 캐릭터 스페셜 파일)을, 시스템에 응해 수정할 필요가 있을지도 모릅니다. 이 예에서는, HD 드라이브를 최초로 시험해, DD 드라이브를 다음에 시험합니다 (역주: HD = High Density; 고밀도, DD = Double Density; 배밀도).

    여기에서는, 로우데바이스나 로우파일만을 사용할 필요가 있는 것에 주의해 주세요. 가공된 (cooked) 디바이스 (역주: 블록 스페셜 파일) (을)를 사용하지 않는 것! (아마 하드 디스크는 괜찮겠지만, 플로피는 확실히 안됩니다)

    boot_drive (은)는, 부트 가능한 이미지를 격납하는 파일의 이름입니다. 80 2 2 그렇다고 하는 3 개의 숫자는, 드라이브가 80 개의 실린더와 2 개의 헤드와 트럭 근처 2 개의 섹터를 가지는 것을 나타냅니다. 이것은, MS-DOS 5.0 을 config.sys (와)과 autoexec.bat 의 파일과 함께 인스톨 하는 것이 가능한, 최소의 드라이브입니다.

    좀 더 큰 부트 드라이브를 작성하고 싶을지도 모릅니다.

    파일 boot_drive (은)는 존재할 필요가 있기 때문에, touch 명령로 작성해 주세요.

2   MS-DOS 를 부트 가능해 fdisk, format, sys 명령을 포함한 floppy disk를, A: 드라이브에 삽입해 주세요. 파일 redir.com 도 플로피에 카피해 주세요. 이 때, msdos 파일 시스템형으로 플로피를 mount 하는지, mtools (을)를 사용해 주세요 (예를 들면 “mwrite redir.com a:” (으)로 합니다).

3   doscmd 를 실행해 주세요.

4   > prompt에서, fdisk (와)과 타이프 칩니다.

5   Create DOS partition or Logical Drive (을)를 선택합니다.

6   Create Primary DOS Partition (을)를 선택합니다.

7   크기를 지정합니다 (전형적으로는 드라이브 전체입니다. 그런데도 매우 작은 것입니다. )

8   <ESC> (을)를 몇번인가 눌러, FDISK 를 종료합니다.

9   doscmd 가 실행 중단하기 때문에, 그렇게 되었을 경우, doscmd 를 재차 실행합니다.

10  > prompt에서, format c: (와)과 타이프 쳐, 지시에 따릅니다.

11  > prompt에서, sys c: (와)과 타이프 칩니다.

12  doscmd 를 종료합니다.

13  드라이브로부터 플로피를 없애는지,

        boot C:

    그렇다고 하는 행을 당신의 .doscmdrc 에 가세해 주세요.

14  새로운 디스크로부터 DOS 를 움직입니다. config.sys 와 autoexec.bat 의 양파일을 갖고 싶을까요들 , 우선 처음은 다음과 같이 합니다:

        > copy con: config.sys
        LASTDRIVE=Z
        ^Z
        > copy con: autoexec.bat
        @echo off
        redir.com
        ^Z

15  doscmd 를 종료합니다.

16  FreeBSD 디스크를 짜넣는 마법의 프로그램 redir (을)를 자동적으로 호출하는, 부트 가능한 의사 디스크가 완성했습니다. FreeBSD 디스크를 사용하기 위해서는, 다음의 행을 당신의 .doscmdrc 에 추가합니다:

        assign D: /usr/dos
        assign P: -ro /usr/prb

    이름의 문제에 의해, 액세스 할 수 없는 파일이 있을지도 모르는 것에 주의해 주세요.

진단
실장되어 있지 않은 세치기를 만나면(자), doscmd (은)는 다음과 같은 메세지를 표시해 종료합니다:

    Unknown interrupt 21 function 99

doscmd -x 스윗치 지정시에, X11 support not compiled in 그렇다고 하는 메세지가 표시되었을 경우, 환경 변수 X11BASE (을)를 X Window System 를 인스톨 한 장소 (통상 /usr/X11R6) (으)로 설정해, 소스 디렉토리 (통상 /usr/src/usr.bin/doscmd) 그리고 make install (와)과 타이프 치는 것으로, 본기능을 유효하게 할 수가 있습니다. 이와 같이 동작하기 위해서는, X 프로그래머 킷이 인스톨 되어 있을 필요가 있습니다.

저자
Pace Willisson, Paul Borman

역사
doscmd 하 BSD/386 에 처음으로 등장했습니다.