도스 API
DOS API도스 API는 86-DOS에서 시작된 API로 MS-DOS/PC DOS 및 기타 도스 호환 운영 체제에서 사용된다.DOS API에 대한 대부분의 통화는 소프트웨어 인터럽트 21h(INT 21h)를 사용하여 호출된다.AH 프로세서 레지스터의 하위 기능 번호와 다른 레지스터의 다른 파라미터로 INT 21h를 호출하면 다양한 DOS 서비스를 호출할 수 있다.여기에는 키보드 입력, 비디오 출력, 디스크 파일 액세스, 프로그램 실행, 메모리 할당 및 기타 다양한 활동이 포함된다.1980년대 후반, DOS 확장자는 DOS 보호 모드 인터페이스(DPMI)와 함께 프로그램을 16비트 또는 32비트 보호 모드로 실행할 수 있도록 허용하며, 여전히 DOS API에 대한 액세스 권한을 가지고 있다.
도스 API의 이력
86-DOS와 MS-DOS 1.0의 원래 DOS API는 CP/M과 기능적으로 호환되도록 설계되었다.파일 제어 블록(FCB)을 사용하여 파일에 액세스했다.DOS API는 파일 핸들을 이용한 파일 액세스, 계층적 디렉토리, 디바이스 I/O 제어 등 몇 가지 Unix 개념으로 MS-DOS 2.0에서 크게 확장되었다.[1]DOS 3.1에서는 네트워크 리디렉터 지원이 추가되었다.MS-DOS 3.31에서는 32MB 이상의 하드 디스크를 지원하도록 INT 25h/26h 기능이 향상되었다. MS-DOS 5는 상위 메모리 블록(UMB) 사용을 위한 지원을 추가했다.MS-DOS 5 이후, DOS의 연속적인 독립형 릴리스에 대해 DOS API는 변경되지 않았다.
DOS API 및 Windows
윈도우즈 9x에서 DOS는 보호 모드 시스템과 그래픽 쉘을 로드했다.DOS는 보통 VDM(가상 DOS 머신)에서 접속했지만 윈도우를 로드하지 않고도 리얼 모드 MS-DOS 7.0으로 직접 부팅이 가능했다.DOS API는 VDM에서만 긴 파일 이름 지원이 가능했지만 향상된 국제화 지원과 긴 파일 이름 지원으로 확장되었다.윈도 95 OSR2로 DOS를 7.1로 업데이트하여 FAT32 지원을 추가하였고, 이를 지원하기 위해 DOS API에 기능을 추가하였다.윈도 98과 윈도 ME도 MS-DOS 8.0으로 보고하지만 MS-DOS 7.1 API를 구현한다.
윈도 NT와 그것을 기반으로 하는 시스템(예: 윈도 XP와 윈도 비스타)은 MS-DOS를 기반으로 하지 않고 가상 머신인 NTVDM을 사용하여 도스 API를 처리한다.NTVDM은 DOS 프로그램을 가상 8086 모드(80386 이상의 프로세서에서 사용할 수 있는 보호 모드 내의 실제 모드의 에뮬레이션)에서 실행함으로써 작동한다.NTVDM은 DOS 5.0 API를 지원한다.Linux용 DOVEMU도 이와 유사한 접근법을 사용한다.
DOS에서 사용하는 인터럽트 벡터
다음은 프로그램이 DOS API 기능을 호출하기 위해 사용하는 인터럽트 벡터 목록이다.
인터럽트 벡터 | 설명 | 버전 | 메모들 |
---|---|---|---|
20h | 프로그램 종료 | 1.0+ | DOS 커널에 구현됨 |
21h | 메인 DOS API | 1.0+ | DOS 커널에 구현됨 |
22h | 프로그램 종료 주소 | 1.0+ | 호출 프로그램에서 주소 반환 |
23h | 컨트롤-C 핸들러 주소 | 1.0+ | 기본 처리기는 명령 셸(일반적으로 Command)에 있다.commodore). |
24h | 심각한 오류 처리기 주소 | 1.0+ | 기본 처리기는 명령 셸(일반적으로 Command)에 있다.commodore). |
25h | 절대 디스크 읽기 | 1.0+ | DOS 커널에 구현, DOS 3.31에 개선되어 최대 2GB 파티션을 지원 |
26h | 절대 디스크 쓰기 | 1.0+ | DOS 커널에 구현, DOS 3.31에 개선되어 최대 2GB 파티션을 지원 |
27h | 종료 및 상주 유지 | 1.0+ | COMMAND에 구현됨.DOS 1.0의 COM, DOS 2.0 이상의 DOS 커널 |
28h | 유휴 콜아웃 | 2.0+ | 입력을 대기할 때 DOS 커널로 호출됨 |
29h | 빠른 콘솔 출력 | 2.0+ | 내장된 콘솔 장치 드라이버 또는 ANSI와 같은 대체 드라이버에 의해 구현.SYS |
2Ah | 네트워킹 및 중요 섹션 | 3.0+ | 네트워킹 소프트웨어와 인터페이스하기 위해 DOS 커널에 의해 호출됨 |
2Bh | 사용되지 않음 | ||
2Ch | 사용되지 않음 | ||
2Dh | 사용되지 않음 | ||
2Eh | 재로드 과도 | 2.0+ | COMMAND에 구현됨.COM |
2Fh | 멀티플렉스 | 3.0+ | 하위 기능 번호에 따라 DOS 커널 및 다양한 프로그램(PRINT, MSCDEX, DOSKE, ADD 등)에서 구현 |
DOS INT 21h 서비스
다음은 DOS API 기본 소프트웨어 인터럽트 벡터를 통해 제공되는 기능의 목록이다.
AH | 설명 | 버전 |
---|---|---|
00h | 프로그램 종료 | 1.0+ |
01h | 문자입력 | 1.0+ |
02h | 캐릭터 출력 | 1.0+ |
03h | 보조 입력 | 1.0+ |
04h | 보조 출력 | 1.0+ |
05h | 프린터 출력 | 1.0+ |
06h | 직접 콘솔 I/O | 1.0+ |
07h | 에코 없이 직접 콘솔 입력 | 1.0+ |
08h | 에코 없이 콘솔 입력 | 1.0+ |
09h | 표시 문자열 | 1.0+ |
0Ah | 버퍼 키보드 입력 | 1.0+ |
0Bh | 입력 상태 가져오기 | 1.0+ |
0Ch | 입력 버퍼 및 입력 플러시 | 1.0+ |
0Dh | 디스크 재설정 | 1.0+ |
0Eh | 기본 드라이브 설정 | 1.0+ |
0Fh | 파일 열기 | 1.0+ |
10h | 파일 닫기 | 1.0+ |
11h | 첫 번째 파일 찾기 | 1.0+ |
12h | 다음 파일 찾기 | 1.0+ |
13h | 파일 삭제 | 1.0+ |
14h | 순차 읽기 | 1.0+ |
15h | 순차적 쓰기 | 1.0+ |
16h | 파일 만들기 또는 잘라내기 | 1.0+ |
17h | 파일 이름 바꾸기 | 1.0+ |
18h | 예약됨 | 1.0+ |
19h | 기본 드라이브 가져오기 | 1.0+ |
1Ah | 디스크 전송 주소 설정 | 1.0+ |
1Bh | 기본 드라이브에 대한 할당 정보 가져오기 | 1.0+ |
1Ch | 지정된 드라이브에 대한 할당 정보 가져오기 | 1.0+ |
1Dh | 예약됨 | 1.0+ |
1Eh | 예약됨 | 1.0+ |
1Fh | 기본 드라이브의 디스크 매개 변수 블록 가져오기 | 1.0+ |
20h | 예약됨 | 1.0+ |
21h | 랜덤 읽기 | 1.0+ |
22h | 랜덤 쓰기 | 1.0+ |
23h | 레코드의 파일 크기 가져오기 | 1.0+ |
24h | 무작위 레코드 번호 설정 | 1.0+ |
25h | 인터럽트 벡터 설정 | 1.0+ |
26h | PSP 작성 | 1.0+ |
27h | 랜덤 블록 읽기 | 1.0+ |
28h | 랜덤 블록 쓰기 | 1.0+ |
29h | 구문 분석 파일 이름 | 1.0+ |
2Ah | 날짜 가져오기 | 1.0+ |
2Bh | 날짜 설정 | 1.0+ |
2Ch | 시간을 가지다 | 1.0+ |
2Dh | 시간 설정 | 1.0+ |
2Eh | 확인 플래그 설정 | 1.0+ |
2Fh | 디스크 전송 주소 가져오기 | 2.0+ |
30h | DOS 버전 가져오기 | 2.0+ |
31h | 종료 및 상주 유지 | 2.0+ |
32h | 지정된 드라이브에 대한 디스크 매개 변수 블록 가져오기 | 2.0+ |
33h | Ctrl-Break 가져오기 또는 설정 | 2.0+ |
34h | InDOS 플래그 포인터 가져오기 | 2.0+ |
35h | 인터럽트 벡터 가져오기 | 2.0+ |
36h | 사용 가능한 디스크 공간 가져오기 | 2.0+ |
37h | 스위치 문자 가져오기 또는 설정 | 2.0+ |
38h | 국가 정보 가져오기 또는 설정 | 2.0+ |
39h | 하위 디렉토리 작성 | 2.0+ |
3Ah | 하위 디렉토리 제거 | 2.0+ |
3Bh | 현재 디렉터리 변경 | 2.0+ |
3Ch | 파일 만들기 또는 잘라내기 | 2.0+ |
3Dh | 파일 열기 | 2.0+ |
3Eh | 파일 닫기 | 2.0+ |
3Fh | 파일 또는 장치 읽기 | 2.0+ |
40h | 파일 또는 장치 쓰기 | 2.0+ |
41h | 파일 삭제 | 2.0+ |
42h | 파일 포인터 이동 | 2.0+ |
43h | 파일 특성 가져오기 또는 설정 | 2.0+ |
44h | 장치에 대한 I/O 제어 | 2.0+ |
45h | 손잡이 중복 | 2.0+ |
46h | 리디렉션 핸들 | 2.0+ |
47h | 현재 디렉터리 가져오기 | 2.0+ |
48h | 메모리 할당 | 2.0+ |
49h | 해제 메모리 | 2.0+ |
4Ah | 메모리 재할당 | 2.0+ |
4Bh | 프로그램 실행 | 2.0+ |
4Ch | 반환 코드와 함께 종료 | 2.0+ |
4Dh | 프로그램 반환 코드 가져오기 | 2.0+ |
4Eh | 첫 번째 파일 찾기 | 2.0+ |
4Fh | 다음 파일 찾기 | 2.0+ |
50h | 현재 PSP 설정 | 2.0+ |
51h | 현재 PSP 가져오기 | 2.0+ |
52h | DOS 내부 포인터 가져오기(SYSVARS) | 2.0+ |
53h | 디스크 매개 변수 블록 생성 | 2.0+ |
54h | 확인 플래그 가져오기 | 2.0+ |
55h | 프로그램 PSP 만들기 | 2.0+ |
56h | 파일 이름 바꾸기 | 2.0+ |
57h | 파일 날짜 및 시간 가져오기 또는 설정 | 2.0+ |
58h | 할당 전략 가져오기 또는 설정 | 2.11+ |
59h | 확장 오류 정보 가져오기 | 3.0+ |
5Ah | 고유 파일 만들기 | 3.0+ |
5Bh | 새 파일 만들기 | 3.0+ |
5Ch | 파일 잠금 또는 잠금 해제 | 3.0+ |
5Dh | 파일 공유 기능 | 3.0+ |
5Eh | 네트워크 기능 | 3.0+ |
5Fh | 네트워크 리디렉션 기능 | 3.0+ |
60h | 파일 이름 확인 | 3.0+ |
61h | 예약됨 | 3.0+ |
62h | 현재 PSP 가져오기 | 3.0+ |
63h | DBCS 리드 바이트 테이블 포인터 가져오기 | 3.0+ |
64h | 외부 이벤트 플래그 대기 설정 | 3.2+ |
65h | 확장 국가 정보 가져오기 | 3.3+ |
66h | 코드 페이지 가져오기 또는 설정 | 3.3+ |
67h | 핸들 개수 설정 | 3.3+ |
68h | 파일 커밋 | 3.3+ |
69h | 미디어 ID 가져오기 또는 설정 | 4.0+ |
6Ah | 파일 커밋 | 4.0+ |
6Bh | 예약됨 | 4.0+ |
6Ch | 파일 열기/생성 확장 | 4.0+ |
기본 지원이 포함된 운영 체제
- MS-DOS – 가장 광범위한 구현
- PC DOS – MS-DOS의 IBM OEM 버전
- OS/2 1.x – MS-DOS 및 PC DOS의 후속 제품인 Microsoft/IBM
- SISNE plus – Itautec 및 Scopus Tecnologia가 브라질에서 만든 복제품
- DR-DOS – Novell DOS, PalmDOS, OpenDOS 등을 포함한 Digital Research DOS 제품군
- PTS-DOS – S/DOS를 포함한 PhysTechSoft & Paragon DOS 클론
- ROM-DOS – Datalight ROM DOS 버전
- Embedded DOS – 일반 소프트웨어 버전
- FreeDOS – 무료 오픈 소스 DOS 클론
- ReactOS(IA-32 및 x86-64 버전)
- Windows 95 – MS-DOS 7.0 포함
- Windows 98 – MS-DOS 7.1 포함
- Windows 98 SE – MS-DOS 7.1 포함
- Windows ME – MS-DOS 8.0 포함
DOS 에뮬레이션 계층이 있는 운영 체제
- PCMODE를 사용하는 동시 CP/M-86(3.1만 해당) – 디지털 연구 CP/M-86 기반 OS(PC DOS 에뮬레이터 옵션 포함)
- Concurrent DOS – PC DOS 에뮬레이터가 내장된 Digital Research CDOS 제품군
- DOS Plus – Concurrent PC DOS 4.1–5.0의 분해된 단일 사용자 모델
- 다중 사용자 DOS – 데이터팩 시스템 매니저, IMS REAL/32 등을 포함한 디지털 리서치/Novell MDOS 제품군
- OS/2(2.x 이상) – 가상 시스템에서 완전히 라이센스가 부여된 MS-DOS 5.0을 사용하는 IBM 운영 체제
- Windows NT(64비트 버전을 제외한 모든 버전)
기타 에뮬레이터
참고 항목
참조
- ^ Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772.
추가 읽기
- 앨런, 폴, 게이츠, 빌, 왕, 아드리안, 라슨, 크리스,. Letwin, 고든, O'Rear, 밥, 패터슨, 팀, 피터스, 크리스, 필립스, 브루스, 레이놀즈, 아론, Stillmaker, 베티, Zbikowski, 마크(1986년)."기술 고문".MS-DOS(버전 1.0-3.2)기술 참조에는 백과 사전.Bornstein, 하워드, Bredehoeft, 로렌스, 던컨, 레이, 모리스, 캐롤, 로즈, 데이비드, 소하, 존은 톰린, 짐, 비언. 미국, 캐슬린, 울버 턴, 반까지.Beley, 짐, Preppernau, 배리, 비슨, 팸, 루이스, 안드레아. Rygmyr, 데이비드(eds.).마이크로 소프트 참조 도서관이 있습니다.제1권(원래는 교육 내향적이었습니다.).워싱턴 주, 미국:MicrosoftPress.아이 에스비엔 0-914845-69-1. LCCN 86-8640.온라인 컴퓨터 도서관 센터 635600205.(xvii+1053 페이지, 29))(NB다.본 원판에는 시스템 내부 작업 흐름도가 수록되어 있다.마이크로소프트에 의해 1986년 대량 배포 전에 철회되었는데, 그것은 출판되어서는 안 될 일부 기밀 정보뿐만 아니라 많은 사실상의 오류들을 포함하고 있었기 때문이다.인쇄본이 거의 남아 있지 않았다.1988년에 전면 재작업된 판본으로 대체되었다. [1]
- Zbikowski, 마크, 앨런, 폴, 발머, 스티브, 보먼 판사, 르우벤, 보먼 판사, 롭, 버틀러, 존은 캐롤, 척이며, 마크, 첼, 데이비드. Colee, 마이크, 코트니, 마이크;Dryfoos, 마이크, 던컨, 레이첼, Eckhardt, 커트, 에번스, 에릭, 농부, 릭, 게이츠, 빌, 기어리, 마이클 그리핀, 밥. 호가스, 더그. 존슨, 제임스 W.;Kermaani, Kaamel, 왕, Adrian은;. 코흐, 리드, 란도브스키, 제임스 라슨, 크리스, 레넌, 토머스, Lipkie, 댄, 맥도날드, 마크, 맥키니, 브루스, 마틴, 파스칼, Mathers가, 에스텔. Matthews, 밥, Melin, 데이비드. Mergentime, Charles:네빈, 랜디, 뉴웰, 댄, 뉴웰, 타니, 노리스, 데이비드, 있을 때 오리어리, 마이크;O'Rear, 밥, 올손, 마이크;Osterman, 래리, Ostling, 리지, 빠이, 선일. 패터슨, 팀;P.에레즈, 게리, 피터스, 크리스, 페쫄트, Charles:폴록, 존은 레이놀즈, 아론, 루빈은 대릴, 라이언, 랠프, Schulmeisters, 칼, 샤, Rajen, 쇼, 배리, 쇼트, 앤서니, Slivka, 벤, Smirl, 존, Stillmaker, 베티, 스토다드, 존은 틸먼, 데니스..휘튼, 그렉, Yount, 나탈리. Zeck, 스티브(1988년)."기술 고문".그 MS-DOS백과 사전:버전 1.03.2를 통해.덩컨, 레이, 보츠윅, 스티브, 버고인, 키스, 바이어스, 로버트 A.;까지.호건, 톰, 카일, 짐,. Letwin, 고든, 페쫄트, Charles:라비, 칩, 톰린, 짐, 윌턴 양탄자, 리처드, 울버 턴, 반, 웡은 윌리엄;우드콕. 도요목 도요과의 조류., JoAnne(완전히 교육 reworked.).워싱턴 주, 미국:MicrosoftPress.아이 에스비엔 1-55615-049-0. LCCN 87-21452.OCLC 16581341.(xix+1570 페이지, 26))(NB다.이 판은 다른 작가 팀에 의해 철회된 1986년 초판을 광범위하게 재작업한 후 1988년에 출판되었다.[2])
- IBM PC & PS/2에 대한 피터 노튼과 마이크로소프트 프레스 리처드 윌튼, 1987년 ISBN 1-55615-131-4의 새로운 피터 노턴 프로그래머 설명서.
- Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772.
- Microsoft Press, Thom Hogan의 Programmer's PC 소스북, 1991 ISBN 155615321X
- Microsoft MS-DOS Programmer's Reference - MS-DOS에 대한 공식 기술 참조, Microsoft Press, 1993 ISBN 1556155468
- IBM PC DOS 7 기술 업데이트
- OpenDOS Developer's Reference Series — OpenDOS Programmer's Guide — System and Programmer's Guide. Caldera, Inc. August 1997. Caldera Part No. 200-DOPG-003. Archived from the original on 2017-10-07. Retrieved 2012-06-28. (영국에서 인쇄됨)